php在验证表单返回false时保留文件字段的值

Nad*_*shi 4 php forms file-upload yii

我正在使用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();?>
Run Code Online (Sandbox Code Playgroud)

如果用户输入有错误,文件字段变空,然后用户必须重新选择他的图像..有没有办法将文件字段值保存在yii或php中?

提前致谢

Dav*_*dom 10

简答:不

文件输入依赖于用户的本地文件系统,服务器(以及PHP)对此一无所知.因此,表单已经提交,用户将不得不重新选择该文件.这更像是一个安全问题.

以下是在这方面改进UX的两种可能方法:

  • 该文件已成功上传,因此您可以将其保留在服务器上并在重新提交表单时使用您的副本(难以实现,可能会让用户感到困惑,通常不建议)
  • (更好)您可以在提交之前使用Javascript(或通过AJAX在服务器端)验证表单条目客户端.如果你这样做,你仍然应该验证服务器端,但它将有助于为合法用户提供更好的用户体验,这似乎是你在这里所困扰的.