【问题标题】:Yii2 Client Side ValidationYii2 客户端验证
【发布时间】:2017-08-28 12:25:14
【问题描述】:
在 Yii2 中,我在 model.php 中有条件验证。
当我在文本字段中写入未通过验证的内容时,离开该字段后不会出现错误消息。
只有在 create 上 klick 后才会出现错误消息。
在字段中写入内容后,我必须让消息出现。
<?php
['state', 'required', 'when' => function ($model) {
return $model->country == 'USA';
}, 'whenClient' => "function (attribute, value) {
return $('#country').val() == 'USA';
}"]
【问题讨论】:
标签:
javascript
java
validation
yii2
conditional
【解决方案1】:
在您的模型中:
public function rules()
{
return [
['state', 'required', 'targetClass' => '\backend\models\State',
'message' => 'Your message here'],
];
}
我不确定您的模型是否在后端,因此您可以根据需要进行更正。
在控制器中你必须创建这样的函数:
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')
]
); ?>
请注意,在上面的代码中,我编写了“状态/验证”,“状态”是您放置验证操作的控制器的名称。
【解决方案2】:
你应该在 ActiveForm 中设置enableAjaxValidation
例如:
$form = ActiveForm::begin([
'id' => 'contact-form',
'enableAjaxValidation' => true,
]);
【解决方案3】:
也许我描述的问题不太好,所以我再试一次。
问题是条件验证仅在单击保存/创建后才有效。