L'estensione Zend View Helper Segnaposto
-
22-09-2019 - |
Domanda
stavo leggendo il manuale sulla base segnaposto utilizzo , ed ha questo esempio:
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>");
}
// ...
}
che voglio realizzare quasi esattamente questo, ma vorrei aggiungere condizionalmente più valori di classe alle div
s ripetizione, al momento di rendere, se possibile, quando tutto il contenuto è nel segnaposto. Una cosa che specificamente voglio fare è aggiungere la classe di "prima" al primo elemento e "ultima" per l'ultimo elemento. Suppongo che dovrò estendere la classe Zend_View_Helper_Placeholder
per raggiungere questo obiettivo.
Soluzione
Il set stringa con setSeparator()
è quello che verrà utilizzato per implodere elementi di un contenitore. O impostarlo su una stringa vuota o semplicemente lasciare fuori la chiamata a setSeparator()
e inserire i div che separano con il vostro altri contenuti:
<?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() ?>