Расширение заполнителя помощника Zend View
-
22-09-2019 - |
Вопрос
Я читал инструкцию о базовое использование заполнителя, и у него есть этот пример:
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>");
}
// ...
}
Я хочу добиться почти именно этого, но мне хотелось бы условно добавить больше значений класса к повторяющемуся div
s, если это возможно, во время рендеринга, когда все содержимое находится в заполнителе.Единственное, что я хочу сделать, это добавить класс «first» к первому элементу и «last» к последнему элементу.Я предполагаю, что мне придется продлить Zend_View_Helper_Placeholder
класс, чтобы добиться этого.
Решение
Строка, установленная с помощью setSeparator()
это то, что будет использоваться для объединения элементов в контейнере.Либо установите для него пустую строку, либо просто оставьте вызов setSeparator()
и вставьте разделительные элементы div вместе с другим содержимым:
<?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() ?>