что то ищешь тут паря?

вторник, 18 декабря 2012 г.

уиуи уии)

поехали дальше

Фильтры:

Фильтры запускаются в том порядке, в котором они указаны в списке фильтров, при этом фильтр может предотвратить выполнение действия и следующих за ним фильтров.

Фильтр может быть определён как метод класса контроллера. Имя метода должно начинаться на filter. Например, метод filterAccessControl определяет фильтр accessControl. Метод фильтра должен выглядеть так:
public function filterAccessControl($filterChain)
{
// для выполнения последующих фильтров и выполнения действия вызовите метод $filterChain->run()
}

ВОТ ТУТ НУЖНО ВЧИТАТЬСЯ

 $filterChain это список последующих фильтров тоесть после выполнения того что в скобках(можно не доконца) мы может вызвать   $filterChain->run() и выполнится фильтр в списке  $filterChain(наверное они поочереди выполняются хз)

где $filterChain — экземпляр класса CFilterChain, представляющего собой список фильтров, ассоциированных с запрошенным действием. 

Таак.тут непонятно

В коде фильтра можно вызвать $filterChain->run() для того, чтобы продолжить выполнение последующих фильтров и действия.

Фильтр также может быть экземпляром класса CFilter или его производного. Следующий код определяет новый класс фильтра:
class PerformanceFilter extends CFilter
{
protected function preFilter($filterChain)
{
// код, выполняемый до выполнения действия
return true; // false — для случая, когда действие не должно быть выполнено
}

protected function postFilter($filterChain)
{
// код, выполняемый после выполнения действия
}
}

ну я понял что в коде можно вызвать.типа если ок то пошли дальше и вызываем ран()
кароче тут я непонял но поехали дальше


Для того чтобы применить фильтр к действию, необходимо переопределить метод CController::filters(), возвращающий массив конфигураций фильтров. Например:
class PostController extends CController
{
public function filters()
{
return array(
'postOnly + edit, create',
array(
'application.filters.PerformanceFilter - edit, create',
'unit'=>'second',
),
);
}
}

Данный код определяет два фильтра: postOnly и PerformanceFilter. Фильтр postOnly задан как метод (соответствующий метод уже определен в CController), в то время как PerformanceFilter — фильтр на базе класса. Псевдоним application.filters.PerformanceFilter указывает на файл класса фильтра — protected/filters/PerformanceFilter. Для конфигурации PerformanceFilter используется массив, что позволяет задать начальные значения свойств фильтра. В данном случае свойство unit фильтра PerformanceFilter будет инициализировано значением 'second'.

Используя операторы '+' и '-' можно указать, к каким действиям должен и не должен быть применён фильтр. В приведённом примере postOnly будет применён к действиям edit и create, а PerformanceFilter — ко всем действиям, кроме edit и create. Если операторы '+' и '-' не указаны, фильтр будет применён ко всем действиям. 

ну тут примерно понятно.как дойдет до практики посмотрим.

Комментариев нет:

Отправить комментарий