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)