【问题标题】:Yii2 client side validation refreshes the page on form submitYii2客户端验证刷新表单提交页面
【发布时间】:2018-06-21 06:19:26
【问题描述】:

我正在尝试执行客户端检查,但页面正在刷新。我的规则如下:

public function rules()
    {
        return [
            [['email'], 'required'],
            [['email','cron'], 'string'],
            [['email'], 'string', 'max' => 100],
            [['cron', 'group', 'type'], 'integer'],
            [['email'], 'unique'],
            ['group', 'required', 'when' => function($model){
                return $model->type == 1;
            }, 'whenClient' => 'function(attribute, value){
                return 1==2;
            }']
        ];
    }

enableClientValidation 的表单像这样切换为 true:

<?php $form = ActiveForm::begin([
                    'enableClientValidation' => true
                ]) ?>

我的错误在哪里?提前谢谢!

【问题讨论】:

  • 你也需要enableAjaxValidation。
  • 谢谢!现在工作:) 你首先给出了正确的答案,所以如果你让它投票,就会给你积分。

标签: yii2


【解决方案1】:

你需要设置AcitveForm的enableAjaxValidation属性:

$form = ActiveForm::begin([
   'id' => 'form-id',
   'enableAjaxValidation' => true,
]);

控制器

if ($model->load(Yii::$app->request->post())) {
    if(Yii::$app->request->isAjax) {
        return $this->asJson(ActiveForm::validate($model));
    }
}

Yii2 Ajax Validation

asJson()

【讨论】:

  • 不知何故页面仍在刷新。该记录未保存在 db 中,因为验证未通过明显但错误消息未显示。 1==2 条件始终为假,所以我应该看到错误消息并且必须留在同一页面上,对吗?我认为它没有连接到whenClient 部分。谢谢!
  • @TomaTomov Helpful 和 This 和 Issue
【解决方案2】:
<?php $form = ActiveForm::begin([
                    'id' => 'form',
                    'enableAjaxValidation' => true
                ]) ?>

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多