O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
class PerformanceFilter extends CFilter<br />
{<br />
protected function preFilter($filterChain)<br />
{<br />
// lógica que será executada antes da ação<br />
return true; // deve retornar false caso a ação<br />
// não deva ser executada<br />
}<br />
}<br />
protected function postFilter($filterChain)<br />
{<br />
// lógica que será executada depois da ação<br />
}<br />
Para aplicar os filtros às ações, precisamos sobrescrever o méto<strong>do</strong> CController::filters().<br />
Esse méto<strong>do</strong> deve retornar um vetor com as configurações <strong>do</strong>s filtros. Por exemplo:<br />
class PostController extends CController<br />
{<br />
......<br />
public function filters()<br />
{<br />
return array(<br />
'postOnly + edit, create',<br />
array(<br />
'application.filters.PerformanceFilter - edit, create',<br />
'unit'=>'second',<br />
),<br />
);<br />
}<br />
}<br />
No código acima, especificamos <strong>do</strong>is filtros: postOnly e PerformanceFilter. O filtro<br />
postOnly é basea<strong>do</strong> em um méto<strong>do</strong> (o méto<strong>do</strong> correspondente já está defini<strong>do</strong> na classe<br />
CController); enquanto o filtroPerformanceFilter é basea<strong>do</strong> em uma classe. O alias<br />
application.filters.PerformanceFilter especifica que a classe desse filtro está em protected/<br />
filters/PerformanceFilter. Utilizamos um vetor para configurar o filtro PerformanceFilter,<br />
assim podemos inicializar devidamente os valores de suas propriedades. Nesse caso, a<br />
propriedade unit dessa classe será inicializada com o valor second.<br />
Utilizan<strong>do</strong>-se os opera<strong>do</strong>res + e -, podemos especificar a quais ações os filtros devem ou<br />
não ser aplica<strong>do</strong>s. No último exemplo, o filtro postOnly deverá ser aplica<strong>do</strong> as ações edit