Yii - 使用filefield更新记录

时间:2015-06-11 14:43:05

标签: file-upload yii

我正在使用Yii开发数据库界面。我跟着interface doc以便在创建新记录时启用文件上传,但是我遇到了更新问题。我希望用户能够填写其他表单字段,而无需再次上传文件。我在_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),

在存在文件字段时是否有标准的方法来实现记录udate?我该如何更改我的代码? 谢谢。

1 个答案:

答案 0 :(得分:0)

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

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/