ActiveForm Validation Filter
При использовании CActiveForm с включенной AJAX валидацией, в документации предлагают метод
protected function performAjaxValidation($model) { if(isset($_POST['ajax']) && $_POST['ajax']==='user-form') { echo CActiveForm::validate($model); Yii::app()->end(); } }
Вместо этого, чтоб каждый раз не писать этот метод в контроллере, можно воспользоваться этим фильтром для нужных действий.
Установка и настройка
public function filters() { return array( array( 'ext.yiiext.filters.activeFormValidation.EActiveFormValidationFilter[ +|- Action1, Action2, ...]', // Название или массив названий классов для проверяемой модели. // Метод EActiveFormValidationFilter::getModelsInternal() вернет массив моделей используя эти классы. 'models'=>array( 'ModelClassToBeValidate', // Передаем имя модели SecondModel:model()->findByPk(1), // Передаем объект модели array('modelClass'=>'ThirdModel','scenario'=>'update','isNewRecord'=>true), // Передаем имя модели а также сценарий ), // Ид формы. 'formId'=>'form', // Имя параметра используемого в AJAX-запросе. 'ajaxVar'=>'ajax, ), ); }
Changelog
0.4 [] Change models scenario defaults to 'ajax-actionId'. [] Change formId defaults to 'actionId-form', where 'actionId' is the action ID being filtered by this filter.
0.3 Warning: this version is not backwards compatible to 0.2. [*] Change method of setting up a models.
0.2
[+] Support to set model instances.
[*] Fix supporting array of model.
0.1 [+] Initial public release.