Frage

Ich las das Handbuch über Grundlegende Nutzung der Platzhalter, und es hat dieses Beispiel:

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>");
    }

    // ...
}

Ich möchte fast genau das erreichen, aber ich möchte der Wiederholung bedingt mehr Klassenwerte hinzufügen divs zum Zeitpunkt der Renderung, wenn möglich, wenn der gesamte Inhalt im Platzhalter ist. Eine Sache, die ich speziell tun möchte, ist die Klasse von "First" zum ersten Element und "Last" zum letzten Element hinzuzufügen. Ich gehe davon aus, dass ich das erweitern muss Zend_View_Helper_Placeholder Klasse, um dies zu erreichen.

War es hilfreich?

Lösung

Die Zeichenfolge mit festgelegt mit setSeparator() wird verwendet, um Elemente in einem Behälter zu implodieren. Stellen Sie es entweder auf eine leere Zeichenfolge ein oder lassen Sie den Anruf einfach von setSeparator() und fügen Sie die trennenden Divs zusammen mit Ihrem anderen Inhalt ein:

  <?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() ?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top