Валидация

Всем доброе утро, есть форма:


$form = $this->beginWidget('CActiveForm', array(

                        'id' => 'registration-form',

                        'action' => '/users/registration',

			'enableClientValidation' => true,

                        'enableAjaxValidation' => true,

                        'clientOptions' => array(

                            'validateOnSubmit' => true,

			    'validateOnChange' => false

                        ),

                    ));

                    $model = new Users('register');


echo $form->textField($model, 'username', array('value' => 'Логин'));


echo $form->error($model, 'username', array('class' => 'err-text'));


echo CHtml::ajaxSubmitButton('Регистрация', '/users/registration',

 

array(


'type' => 'POST',

									'dataType'=>'json',


'update' => '#registration-form',

), 


array('class' => 'btn'));



Но validateOnSubmit не работает, если включить ‘validateOnChange’ => true, валидация срабатывает сразу без нажатия на кнопку(форма в модальном окне), если выключить ничего вообще не работает :unsure:

У вас не хватает кнопки submit. ajaxSubmitButton это из другой оперы.

Собственно так и должно быть при включении


 

'validateOnChange' => true



Вам нужно правильно обрабатывать форму в контроллере. Метод performAjaxValidation (если делали с помощью генерации контроллер) предназначен для этого.

По сути что вам нужно сделать - делать


CActiveform::validate()

или просто валидацию модели после присвоения данных и выдавать результат json, потом делать


Yii::app()->end();

Если не получится - расскажу подробнее.

Спасибо, гляну :)