-1

パーシャルを使用してZend_Navigationを装飾し、目的の出力をフェッチしています。タグを追加class="active"するのに問題があることを除いて、すべてが正常に機能しています。<a href..>これが私のレイアウトの一部ですsidebar.phtml

<ul id="menu" class="nav">
<?php foreach($this->container as $page): ?>
    <li class="<?php echo $page->class; ?>"><a href="<?php echo $page->getHref(); ?>"><span><?php echo $page->label; ?></span></a></li>
<?php endforeach; ?>
</ul>

現在のページ<a href="<?php echo $page->getHref(); ?>">に追加したいです。class="active"

検索して見つけた解決策をいくつか試しました。しかし、私には何もうまくいきませんでした。

ほとんどのソリューションは、たとえばコントローラーでそれを行うことについて話します

$page = $this->view->navigation()->findOneByLabel('Your Label');
if ( $page ) {
  $page->setActive();
}

私はまだこれをテストしていません。navigation.xml1つのファイルからレイアウトで複数のナビゲーションを使用しているため。コントローラーや他のヘルパーではなく、パーシャル自体でそれを行う方法があるかどうか疑問に思っていましたか?

ありがとうございました

4

1 に答える 1

1

それは簡単です。ビューパーシャルでは、アクティブなページを確認できます。

if ($page->isActive()) { ... }

ZFドキュメントから:

注:ページでrouteプロパティを使用する場合は、ルートが定義するデフォルトのパラメーター(モジュール、コントローラー、アクションなど)も指定する必要があることに注意してください。指定しないと、isActive()メソッドがページかどうかを判断できません。アクティブです。この理由は、現在、Zend_Controller_Router_Route_Interfaceオブジェクトからデフォルトのパラメーターを取得する方法も、Zend_Controller_Router_Interfaceオブジェクトから現在のルートを取得する方法もないためです。

于 2012-04-11T14:26:47.120 に答える