Yii2 客户端验证
Yii2 Client Side Validation
在 Yii2 中,我在 model.php 中进行了条件验证。
当我在文本字段中写入未通过验证的内容时,离开该字段后不会出现错误消息。
只有在 klick on create 之后才会出现错误消息。
在字段中输入内容后,我必须如何才能显示消息。
<?php
['state', 'required', 'when' => function ($model) {
return $model->country == 'USA';
}, 'whenClient' => "function (attribute, value) {
return $('#country').val() == 'USA';
}"]
您应该在 ActiveForm
中设置 enableAjaxValidation
例如:
$form = ActiveForm::begin([
'id' => 'contact-form',
'enableAjaxValidation' => true,
]);
可能我描述的问题不太好,所以我再试一次。
问题是条件验证仅在 click on save/create.
后有效
在您的模型中:
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' 是您放置验证操作的控制器的名称。
在 Yii2 中,我在 model.php 中进行了条件验证。 当我在文本字段中写入未通过验证的内容时,离开该字段后不会出现错误消息。 只有在 klick on create 之后才会出现错误消息。 在字段中输入内容后,我必须如何才能显示消息。
<?php
['state', 'required', 'when' => function ($model) {
return $model->country == 'USA';
}, 'whenClient' => "function (attribute, value) {
return $('#country').val() == 'USA';
}"]
您应该在 ActiveForm
中设置enableAjaxValidation
例如:
$form = ActiveForm::begin([
'id' => 'contact-form',
'enableAjaxValidation' => true,
]);
可能我描述的问题不太好,所以我再试一次。 问题是条件验证仅在 click on save/create.
后有效在您的模型中:
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' 是您放置验证操作的控制器的名称。