Что сделать, чтобы пользователь не загружал повторно файл, если форма не прошла валидацию по другому полю?
Я не прошу выложить мне чистое решение, только подтверждение, так или не так я думаю.
Есть форма: пара полей и поле для файла.
Если форма не прошла валидацию по какому-то полю (не по файлу), то при отображении этой формы с ошибками этот файл должен отображаться как уже загруженный, который, конечно, при желании можно заменить на другой.
В Симфони есть фишка, которая может сделать это за тебя? Или уже готовый бандл?
Если нет, то это делает просто загрузкой файла независимо от валидации? Меня напрягает, что если пользователь в этом случае просто плюнет и закроет страницу, то так начнут скапливаться загруженные ненужные картинки.
Я как-то сделал, что загрузка картинки идет аяксом после того, как прошла клиентская и серверная валидация полей. Из очевидных минусов - труднее в управлении, зато нет необходимости удалять картинки.
Можно сделать так, чтобы загружалось в любом случае (в папку temp), после серверной валидации перемещать картинку из temp в папку назначения, а саму папку temp раз в день чистить кроном.
Если подойдет такой вариант - валидация на js. Если важно проверять на сервере - отправлять аяксом данные, если ок делаем загрузку формы.
Так же можно использовать File API, для валидации файла на стороне клиента и/или аяксом отправить форму с файлами и уже проверить на стороне сервера - FormData примеры чтения файлов на стороне клиента
Сессия, другие варианты мне кажется излишне сложные.
При отправке формы загружаем картинку, запоминаем в сессию путь, если картинки нет - шарим в сессии - есть картинка? - хорошо, нету - тоже не страшно, проверяем данные, если неверно - возвращаемся на форму, проверяем или есть урл картинки в сессии, показываем если есть.
PROFIT.