php сохраняет значение файловых полей при проверке формы возвращает false - PullRequest
4 голосов
/ 12 января 2012

Я работаю с формами фреймворка yii, и у меня есть такая форма:

<?php echo CHtml::beginForm('', 'post', array('enctype' => 'multipart/form-data')); ?>
    Image:<?php echo CHtml::activeFileField($model, 'image');?>
          <?php echo CHtml::error($model, 'image');?>

    Full name: <?php echo CHtml::activeTextField($model, 'fullName');?>
               <?php echo CHtml::error($model,'fullName'); ?>
   <?php echo CHtml::submitButton('save);?>
<?php echo CHtml::endForm();?>

если при вводе пользователем произошла ошибка, поле файла становится пустым, а затем пользователь должен повторно выбрать свое изображение ... есть ли способ сохранить значение поля файла в yii или php?

Заранее спасибо

1 Ответ

10 голосов
/ 12 января 2012

Краткий ответ: Нет

Ввод файла зависит от локальной файловой системы пользователя, о которой сервер (и, следовательно, PHP) ничего не знает. Таким образом, одна форма была отправлена, пользователь должен будет повторно выбрать файл. Это больше проблема безопасности, чем что-либо еще.

Вот два возможных подхода к улучшению UX в этом отношении:

  • Файл будет успешно загружен, поэтому вы можете сохранить его на сервере и использовать свою копию при повторной отправке формы (сложно реализовать, что может сбить пользователя с толку и, как правило, не рекомендуется)
  • (лучше) Вы можете проверить клиентскую часть записи формы с помощью Javascript - или серверной стороны через AJAX - перед ее отправкой. Если вы сделаете это, вам все равно следует проверить серверную часть, но это поможет предоставить легитимным пользователям лучший пользовательский опыт, что, похоже, и беспокоит вас здесь.
...