20.11.2014 Views

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!