Estendendo a zend visualizador de suporte auxiliar
-
22-09-2019 - |
Pergunta
Eu estava lendo o manual sobre Uso básico de espaço reservado, e tem este exemplo:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
// ...
protected function _initSidebar()
{
$this->bootstrap('View');
$view = $this->getResource('View');
$view->placeholder('sidebar')
// "prefix" -> markup to emit once before all items in collection
->setPrefix("<div class=\"sidebar\">\n <div class=\"block\">\n")
// "separator" -> markup to emit between items in a collection
->setSeparator("</div>\n <div class=\"block\">\n")
// "postfix" -> markup to emit once after all items in a collection
->setPostfix("</div>\n</div>");
}
// ...
}
Eu quero realizar quase exatamente isso, mas gostaria de adicionar mais valores de classe à repetição div
s, no momento da renderização, se possível, quando todo o conteúdo estiver no espaço reservado. Uma coisa que eu quero especificamente fazer é adicionar a classe de "primeiro" ao primeiro elemento e "último" ao último elemento. Presumo que terei que estender o Zend_View_Helper_Placeholder
classe para conseguir isso.
Solução
A string definida com setSeparator()
é o que será usado para implodir elementos em um contêiner. Defina -o para uma corda vazia ou apenas deixe a chamada para setSeparator()
e insira as divs separadoras junto com seu outro conteúdo:
<?php $this->placeholder('sidebar')->captureStart(); ?>
<?php if($userIsAdmin === TRUE) { ?>
<div class="block admin-menu">
<h4>User Administration</h4>
<ul>
<li> ... </li>
<li> ... </li>
</ul>
</div>
<?php } ?>
<div class="block other-stuff">
<h4>Non-Admin Stuff</h4>
<ul>
<li> ... </li>
<li> ... </li>
</ul>
</div>
<?php $this->placeholder('sidebar')->captureEnd() ?>