【问题标题】:Yii CActiveForm client and ajax validation behaviorYii CActiveForm 客户端和 ajax 验证行为
【发布时间】:2013-09-23 07:59:15
【问题描述】:

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

<? $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() ?>

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

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

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

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

【问题讨论】:

  • @SamuelLiew,为什么他们不应该被允许在这里?如果是这样,那么就不需要yii 标签、rails 标签或codeigniter 标签
  • @ThorpeObazee 我从来没有说过 Yii 的问题是题外话。这个问题对于询问 Yii 框架是如何工作的来说实在是太宽泛了。如果您认为不是,请回答(我会看看您如何尝试)。此外,这个问题还不清楚,因为没有具体问题,OP 也没有具体说明他需要完成什么。如果您有问题,请通过Meta Stack Overflow 提出。
  • @SamuelLiew,我同意。 question 的信息可能太多了。

标签: php validation yii active-form


【解决方案1】:

如果我理解你的话,你必须放入控制器:

$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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-05
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多