Yii2需要更新验证

J.K*_*.A. 6 php validation yii2

我的Yii2表单包含表单字段,具体取决于页面的操作.防爆.当动作发生时,几个字段出现,而动作则create很少出现update.我想根据这种情况添加所需的验证.

防爆.

<?= $form->field($model, 'unique_identifier')->textInput(['maxlength' => 45]) ?>
Run Code Online (Sandbox Code Playgroud)

我只是在显示这个字段时action => 'update'.

现在我想为此添加所需的验证,我试过这个:

[['unique_identifier'], 'required', 'on' => 'update'],
Run Code Online (Sandbox Code Playgroud)

但以上验证不起作用.如果我删除on=>update它在创建和更新方案上的验证.

任何帮助,将不胜感激.

Ton*_*ony 10

更新或创建项目时,ActiveRecord不会自动设置方案.您必须覆盖update()模型中的方法并设置所需的方案.比如你的情况

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

你也可以在你的场景中设置场景 actionUpdate

public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $model->scenario = 'update';
    //load data from request, save model etc.
 }
Run Code Online (Sandbox Code Playgroud)