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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A configuração acima, faz com que o filtro seja aplica<strong>do</strong> a todas as ações <strong>do</strong> controle.<br />

Podemos limita-lo para uma ou algumas ações utilizan<strong>do</strong> o opera<strong>do</strong>r +. Mais detalhes<br />

podem ser encontra<strong>do</strong>s em filtro.<br />

Dica: Podemos utilizar COutputCache como um filtro porque ela estende a classe<br />

CFilterWidget, o que faz com que ela seja tanto um widget quanto um filtro. De fato, o<br />

jeito como um widget funciona é bastante similar a um filtro: um widget (filtro) é<br />

inicia<strong>do</strong> antes que conteú<strong>do</strong> por ele delimita<strong>do</strong> (ação) seja gera<strong>do</strong>, e termina depois<br />

que seu conteú<strong>do</strong> delimita<strong>do</strong> (ação) foi gera<strong>do</strong>.<br />

Conteú<strong>do</strong> Dinâmico<br />

Quan<strong>do</strong> utilizamos caching de fragmentos ou caching de páginas, por diversas vezes nos<br />

encontramos em uma situação em que to<strong>do</strong> o conteú<strong>do</strong> de uma página é estático, exceto<br />

em alguns lugares. Por exemplo, uma página de ajuda pode exibir a informação de ajuda,<br />

estática, com o nome <strong>do</strong> usuário atualmente loga<strong>do</strong>, no topo.<br />

Para resolver esse problema, podemos variar o cache de acor<strong>do</strong> com o nome <strong>do</strong> usuário,<br />

mas isso seria um desperdício de precioso espaço em cache, uma vez que, exceto pelo<br />

nome <strong>do</strong> usuário, to<strong>do</strong> o conteú<strong>do</strong> é o mesmo. Poderíamos também dividir a página em<br />

vários fragmentos e armazena-los individualmente, mas isso tornaria nossa visão mais<br />

complexa. Uma técnica melhor é utilizar o recurso de conteú<strong>do</strong> dinâmico forneci<strong>do</strong> pela<br />

classe CController.<br />

Um conteú<strong>do</strong> dinâmico é um fragmento que não deve ser armazena<strong>do</strong>, mesmo que o<br />

conteú<strong>do</strong> que o contém seja armazena<strong>do</strong> em cache. Para tornar o conteú<strong>do</strong> dinâmico<br />

para sempre, ele deve ser gera<strong>do</strong> todas as vezes, mesmo quan<strong>do</strong> o conteú<strong>do</strong> é servi<strong>do</strong><br />

<strong>do</strong> cache. Por esse motivo, precisamos que esse conteú<strong>do</strong> seja gera<strong>do</strong> por algum méto<strong>do</strong><br />

ou função.<br />

Utilizamos os méto<strong>do</strong> CController::renderDynamic() para inserir o conteú<strong>do</strong> dinâmico no<br />

lugar deseja<strong>do</strong>.<br />

...outro conteú<strong>do</strong> HTML...<br />

<br />

...fragmento que deve ser armazena<strong>do</strong> em cache...<br />

<br />

...fragmento que deve ser armazena<strong>do</strong> em cache...<br />

<br />

...outro conteú<strong>do</strong> HTML...<br />

No exemplo acima, $callback é um callback váli<strong>do</strong> em PHP. Ele pode ser uma string com<br />

o nome de um méto<strong>do</strong> na classe <strong>do</strong> controle ou uma função global. Ele também pode ser<br />

um vetor indican<strong>do</strong> uma méto<strong>do</strong> na classe. Qualquer parâmetro adicional para o méto<strong>do</strong><br />

renderDynamic() será passa<strong>do</strong> para o callback. O callback deve retornar o conteú<strong>do</strong><br />

dinâmico em vez de exibi-lo.

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

Saved successfully!

Ooh no, something went wrong!