Yii2需要更新验证

时间:2015-06-17 08:39:36

标签: php validation yii2

我的Yii2表单包含表单字段,具体取决于页面的操作。防爆。如果操作为create,则会显示很少的字段,而当操作为update时,则会显示很少的字段。我想根据这种情况添加所需的验证。

实施例

<?= $form->field($model, 'unique_identifier')->textInput(['maxlength' => 45]) ?>

我只在action => 'update'时显示此字段。

现在我想为此添加必要的验证,我尝试了这个:

[['unique_identifier'], 'required', 'on' => 'update'],

但以上验证无效。如果我删除了on=>update,那么它会在创建和更新方案中进行验证。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:10)

更新或创建项目时,

ActiveRecord 不会自动设置方案。您必须覆盖模型中的update()方法并设置所需的方案。例如。在你的情况下

public function update($runValidation = true, $attributeNames = null)
{
    $this->scenario = 'update';
    return parent::update($runValidation, $attributeNames);
}

您也可以在actionUpdate

中设置方案
public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $model->scenario = 'update';
    //load data from request, save model etc.
 }