Zend_View Placeholders

Eu sempre fui muito fã do helper placeholder para a Zend_View. Vou dar alguns exemplos de uso:

No arquivo de layout, você tem um lugar para mensagem:

<div>
  <h1>Você está em: <?php echo $this->placeholder('atual'); ?></h1>
</div>

No seu controller, você alteraria da seguinte forma:

public function indexAction(){
  $this->view->placeholder('atual')->set('Home');
}

public function cadastroAction(){
  $this->view->placeholder('atual')->set('Cadastro');
}

Nada de diferente até aí, poderia ser usado com uma varíavel apenas. Mas a vantagem mesmo é poder alterar o conteúdo pela view, como neste exemplo, onde no arquivo de layout haveria uma sidebar caso o conteúdo não apresentasse uma:

<?php
// recupera o conteudo do placeholder
$sidebar = $this->placeholder('sidebar')->getValue();
// verifica se algo foi escrito
if(empty($sidebar)): ?>
<!-- sidebar padrao -->
<ul>
  <li>Foo</li>
  <li>Bar</li>
  <li>Duh</li>
</ul>
<?php
else:
  // escreve o conteudo do placeholder
  echo $this->placeholder('sidebar');
endif;
?>

A partir daí em qualquer view é possível alterá-la. Num arquivo .phtml qualquer:

<?php $this->placeholder('sidebar')->captureStart(); ?>
<h4>Minha sidebar</h4>
<ul>
  <li>Outra</li>
  <li>Info</li>
  <li>Aqui</li>
</ul>
<?php $this->placeholder('sidebar')->captureEnd(); ?>

Uma excelente vantagem em usar o captureStart e o captureEnd é poder estruturar o HTML com a IDE, não necessariamente uma string no código.

Vários placehoders padrões são utilizados no projeto, muitos para definição do cabeçalho HTML, como doctype, headScript (javascripts), headTitle (excelente ajuda) e headLink (arquivos CSS).

É isso.

Leave a Comment