все эти инпуты отправят по одному фото, итого будет 3. Если где-то надо отправлять несколько, то имя должно быть не "photo", а 'photo[]' что бы получить массив файлов, а не 1 файл.
сделал один с action Create
что?
другой с beforeSave
что? Какая разница где Вы реализовали загрузку? Главное как Вы ее реализовали, хоть в beforeValidate, при чем тут это?
осталось только
Вы думаете что если в beforeSave один файл загружается, то второй там загрузить нельзя? Почему все в beforeSave не загрузить? Зачем Вы раскидали одинаковую логику по разным местам?