1

クライアント検証はどのようにトリガーされますか? このコードとして:

<? $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 検証にも当てはまります

4

1 に答える 1

0

私があなたをよく理解していれば、コントローラーに入れる必要があります:

$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();
    }
}
于 2014-04-22T06:35:40.050 に答える