在Yii2中,我在model.php中进行了条件验证。 当我在文本字段中写入未通过验证的内容时,在离开字段后它不会显示错误消息。 只有在 klick 上创建后才会出现错误消息。 在字段中写入内容后,我有什么消息可以显示。
response
答案 0 :(得分:0)
您应该在ActiveForm中设置enableAjaxValidation
例如:
$form = ActiveForm::begin([
'id' => 'contact-form',
'enableAjaxValidation' => true,
]);
答案 1 :(得分:0)
也许我已经描述了问题不太好所以我再试一次。 问题是条件验证仅在保存/创建点击之后才有效。
答案 2 :(得分:0)
在你的模特中:
public function rules()
{
return [
['state', 'required', 'targetClass' => '\backend\models\State',
'message' => 'Your message here'],
];
}
我不确定您的模型是否在后端,因此您可以根据需要更正。
在Controller中你必须创建这样的函数:
public function actionValidation(){
$model = new State();
if(Yii::$app->request->isAjax && $model->load(Yii::$app->
request->post())){
Yii::$app->response->format = 'json';
return ActiveForm::validate($model);
}
}
还有一步,在你的表格开头:
<?php $form = ActiveForm::begin(
[
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute('state/validation')
]
); ?>
注意,在上面的代码中我写了'state / validation','state'是控制器的名称,你可以在其中放置验证操作。