Yii CActiveForm 客户端和 ajax 验证行为


Yii CActiveForm client and ajax validation behavior

客户端验证如何触发?如下代码:

<? $form = $this->beginWidget('CActiveForm',array(
'id' => 'user-register',
'enableAjaxValidation'=>true, 
'enableClientValidation'=>true,
'clientOptions'=>array(
    'validateOnSubmit'=>true,
    'afterValidate' => "js: function(form, data, hasError) {
        console.log(data);
        return false;
    }"
)));
?>
<?= $form->errorSummary($user); ?>
<?= $form->textField($user, 'email'); ?>
<?= $form->error($user,'email'); ?>
<? $this->endWidget() ?>

工作正常(显示电子邮件字段的错误,如错误摘要() 和 error() 方法中的用户模型中所述,但随后我删除了

<?= $form->error($user,'email'); ?>

客户端验证未触发,表单已提交

相同的行为也适用于 ajax 验证

如果我很了解你,你必须放入控制器:

$this->performAjaxValidation($model);

就在之前:

if (isset($_POST['User']))

然后,找到函数 performAjaxValidation(在同一控制器中)并将默认字符串更改为 user-register,如下所示:

protected function performAjaxValidation($model)
{
    if (isset($_POST['ajax']) && $_POST['ajax'] === 'user-register')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
}