Zend Görünüm Yardımcısı Tutucu'yu genişletme

1 Cevap php

I basic placeholder usage ile ilgili kılavuzu okuma, ve bu örnek vardır:

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

    // ...
}

Ben neredeyse tam bunu başarmak istiyorum, ama ben şartlı mümkünse tüm içerik tutucuya olduğunda, işleme sırasında, tekrarlayan div s daha sınıf değerlerini eklemek istiyorum. Ben özellikle yapmak istediğiniz bir şey ilk elemanı "ilk" sınıfını eklemek ve son öğesi "son" olduğunu. Ben bunu gerçekleştirmek için Zend_View_Helper_Placeholder sınıfını genişletmek gerekecek olduğunu varsayalım.

1 Cevap

Ile ayarlanmış dize setSeparator() bir kapta elemanları patlamaya kullanılacak budur. Boş bir dizeye ayarlayın ya da sadece setSeparator() için çağrı bırakın ve diğer içeriği ile birlikte ayıran divs eklemek ya:

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