2010-03-25 6 views
2

j'ai lu le manuel sur les basic placeholder usage, et il a cet exemple:Extension Helper Voir Zend Placeholder

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

    // ... 
} 

que je veux accomplir que presque exactement, mais je voudrais ajouter conditionnellement plusieurs valeurs de classe à la répéter div s, au moment du rendu si possible, lorsque tout le contenu se trouve dans l'espace réservé. Une chose que je veux spécifiquement faire est d'ajouter la classe "first" au premier élément et "last" au dernier élément. Je suppose que je vais devoir étendre la classe Zend_View_Helper_Placeholder pour accomplir ceci.

Répondre

1

La chaîne définie avec setSeparator() est ce qui sera utilisé pour imploser des éléments dans un conteneur. Soit vous entreprenez à une chaîne vide ou tout simplement laisser l'appel à setSeparator() et insérer les séparant divs avec votre autre contenu:

<?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

Je veux vraiment définir des classes au moment de rendre si possible, lorsque tout le contenu est dans l'espace réservé. Une chose que je veux spécifiquement faire est d'ajouter la classe "first" au premier élément et "last" au dernier élément. (Mise à jour de la question avec ces exigences aussi) – Sonny

+0

J'ai fini par utiliser votre solution, donc je l'attribue comme réponse. Merci Gordon! – Sonny

Questions connexes