2012-01-12 64 views
4

我與Yii框架形式的工作,我有一個這樣的形式:PHP保留文件中的字段值驗證表單返回false時

<?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的文件字段值?

在此先感謝

回答

10

簡短的回答:沒有

的文件輸入的用戶的本地文件系統,哪些服務器(和PHP因此)一無所知的依賴。所以一個表單已經提交,用戶將不得不重新選擇文件。這比其他任何事情都更爲安全。

這裏有兩種可能的方法來改善UX在這方面:

  • 該文件將已成功上傳,所以你可以把它的服務器上,當窗體重新提交使用您的副本(硬以實現,可能會讓用戶感到困惑,並且通常不推薦)
  • (更好)您可以在提交之前使用Javascript驗證表單條目客戶端,或者通過AJAX驗證表單條目客戶端。如果你這樣做,你仍然應該驗證服務器端,但它會幫助合法用戶提供更好的用戶體驗,這似乎是你在這裏所困擾的。