Yii - 使用文件字段更新记录

Yii - update record with filefield

我正在使用 Yii 开发数据库接口。我遵循 this tutorial 以在创建新记录时启用文件上传,但我在更新时遇到问题。我希望用户能够填写其他表单字段,而无需再次上传文件。我在 _form 视图

中试过了
<?php if($model->isNewRecord){ ?>
    <div class="row">
        <?php echo $form->labelEx($model,'filename'); ?>
        <?php echo $form->fileField($model,'filename'); ?>
        <?php echo $form->error($model,'filename'); ?>
    </div>
    <?php }else{ ?>
    <div class="row">
        <?php echo $form->textField($model,'filename', array('value'=>$model->filename)); ?>        
    </div>
    <?php } ?>

但是当我提交表单时出现错误文件名不能为空。请注意,在我的模型中,我声明了以下规则:

array('filename', 'file', 'types'=>'jpg, jpeg, gif, png),

是否有一种标准方法可以在存在文件字段的情况下实现记录更新?如何更改我的代码? 谢谢。

您可以在规则中指定不需要提交文件。

array('filename', 'file', 'types'=>'jpg, jpeg, gif, png', 'allowEmpty'=>true),

allowEmpty 将删除文件上传字段的非强制性条件。

如果您希望文件在创建时强制执行,而不是在更新时强制执行,您可以使用它。

array('filename', 'file', 'types'=>'jpg, jpeg, gif, png', 'allowEmpty'=>false, 'on'=>'create'),
array('filename', 'file', 'types'=>'jpg, jpeg, gif, png', 'allowEmpty'=>true, 'on'=>'update'),

参考资料:http://www.yiiframework.com/forum/index.php/topic/4727-uploaded-file-allowempty-rule-only-in-a-certain-scenario/