Yii 2.0:如何针对不同的场景在同一属性上设置不同的规则


Yii 2.0 : how to set different rules on same attribute for different scenerio

我需要在yii 2.0中验证一个文件字段。我的文件字段"name"规则如下所示。

[['name'], 'file', 'skipOnEmpty'=>FALSE, 'extensions'=>'jpg, jpeg, gif, png', 'maxSize'=>'1024']

我有两个场景插入和更新。对于插入,我需要'skipOnEmpty'=>FALSE,对于更新,我需要'skipOnEmpty'=>TRUE

如何在Yii 2.0中实现这一点?

只需制定两个具有所需场景的验证规则:

[['name'], 'file', 'skipOnEmpty'=>FALSE, 'extensions'=>'jpg, jpeg, gif, png', 'maxSize'=>'1024', 'on'=>'insert']
[['name'], 'file', 'skipOnEmpty'=>TRUE, 'extensions'=>'jpg, jpeg, gif, png', 'maxSize'=>'1024', 'on'=>'update']

当你初始化模型时,在你的控制器中,设置所需的场景:

$model = new Product;
$model->scenario = 'update';

官方文件:http://www.yiiframework.com/doc-2.0/guide-structure-models.html