【问题标题】: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】:

        也许我描述的问题不太好,所以我再试一次。 问题是条件验证仅在单击保存/创建后才有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多