YII2 on blur Ajax 验证不工作

YII2 on blur Ajax validation not working

我正在尝试验证我的 YII2 更改密码表单。但是我在模糊验证上停留在 YII2 上。

    <?php

        use yii\bootstrap\ActiveForm;
        use yii\helpers\Html;
    ?>
    <?php
        $form = ActiveForm::begin([
                    'id' => 'change-password',
                    'action' => $action,
                    'enableAjaxValidation' => true
        ]);
    ?>
<?php echo $form->field($model, 'old_password')->label(false)->passwordInput(['placeholder' => 'Your Old Password', 'class' => 'form-control']); ?>


<?php echo $form->field($model, 'new_password')->label(false)->passwordInput(['placeholder' => 'Your New Password', 'class' => 'form-control']); ?>


<?php echo $form->field($model, 'confirm_password')->label(false)->passwordInput(['placeholder' => 'Confirm Your New Password', 'class' => 'form-control']); ?>


<?php echo Html::submitButton('Submit', array('class' => 'btn btn-primary')); ?>
    <?php ActiveForm::end(); ?>

谁能告诉我我做错了什么?

仅将其包含在 ActiveForm 配置中是不够的。

可以发送请求,但表单将保持不变。

您还应该准备您的控制器(在 CRUD 生成的控制器中它们是 createupdate,在您的情况下它可以只有一个 - 负责更新密码)到 return 正确的 JSON 数据以防 AJAX 请求。

official documentation 中查看它是如何完成的。

模型class场景函数必须有一个默认选项:

public function scenarios()
{
    return [
        'default' => ['old_password', 'new_password', 'confirm_password']
    ];
}