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' 是您放置验证操作的控制器的名称。