Расширение Zend View Helper Заполнитель - PullRequest
2 голосов
/ 25 марта 2010

Я читал руководство о базовом использовании заполнителя , и у него есть такой пример:

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 с во время рендеринга, если это возможно, когда весь контент находится в заполнителе. Одна вещь, которую я специально хочу сделать, это добавить класс «first» к первому элементу и «last» к последнему элементу. Я полагаю, что для этого мне придется расширить класс Zend_View_Helper_Placeholder.

1 Ответ

1 голос
/ 25 марта 2010

Строка, установленная с 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() ?>
...