2010-03-25 6 views
2

Я читал инструкцию о basic placeholder usage, и имеет следующий пример:Расширение Zend View Helper Заполнитель

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

ответ

1

Набор строк с setSeparator() - это то, что будет использоваться для встраивания элементов в контейнер. Либо установите его в пустую строку или просто оставить из призыв setSeparator() и вставить разделительные дивы вместе с другим содержанием:

<?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() ?> 
+0

Я действительно хочу, чтобы установить классы во время рендеринга, если это возможно, когда все содержание в заполнителе. Единственное, что я хочу сделать, это добавить класс «первым» к первому элементу и «последний» к последнему элементу. (Обновление вопроса с этими требованиями также) – Sonny

+0

Я закончил использовать ваше решение, поэтому я награждаю его как ответ. Спасибо, Гордон! – Sonny

Смежные вопросы