質問

私はマニュアルを読んでいました 基本的なプレースホルダーの使用, 、そしてそれはこの例を持っています:

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

    // ...
}

私はほぼ正確にそれを達成したいのですが、繰り返しにクラスの値を条件付けて追加したいと思います divs、すべてのコンテンツがプレースホルダーにある場合、可能であればレンダリング時に。私が特にやりたいことの1つは、最初の要素に「最初」のクラスを追加し、最後の要素に「最後」を追加することです。私は拡張しなければならないと思います Zend_View_Helper_Placeholder これを達成するためのクラス。

役に立ちましたか?

解決

で設定された文字列 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() ?>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top