Fork me on GitHub

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.

Automated validation filter for CActiveForm.

Documentation

Downloads (Tags)

Resources