をレンダリング:Zendのナビゲーション - 私は、次のようなXMLファイル内のすべての私のページを定義サブメニュー
<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<nav>
<dashboard>
<label>Dashboard</label>
<module>default</module>
<controller>dashboard</controller>
<action>index</action>
<title>Die Schaltzentrale</title>
</dashboard>
<user>
<label>User</label>
<module>default</module>
<controller>user</controller>
<action>index</action>
<title>Verwaltung der Benutzer</title>
<userList>
<module>default</module>
<controller>user</controller>
<action>index</action>
<label>Userliste anzeigen</label>
</userList>
<newUser>
<label>User anlegen</label>
<module>default</module>
<controller>user</controller>
<action>new</action>
</newUser>
<editUser>
<label>User bearbeiten</label>
<module>default</module>
<controller>user</controller>
<action>edit</action>
</editUser>
</user>
</nav>
</configdata>
私のブートストラップIのセットアップでは私のナビゲーションのように:
protected function _initNavigation()
{
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','nav');
$view = $layout->getView();
$navigation = new Zend_Navigation($config);
$view->navigation($navigation);
Zend_Registry::set('Zend_Navigation',$navigation);
}
このセットアップは私を可能にしますメインメニューに次の行を表示します。
$partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial);
echo $this->navigation()->menu()->render();
これまでのところとても良いです。私の問題は今、特定のサブメニューをレンダリングすることです。たとえば、ユーザコントローラのすべてのアクションを含むメニューをレンダリングしたいとします。私はそれをレンダリングしようとしました:
$page = $this->navigation()->findOneBy('controller','user');
echo $this->navigation()->menu()->renderMenu($page);
出力はありません。また、minDepthまたはmaxDepthオプションを成功させずに設定して出力を取得しようとしました。私の後ろに誰かがいますか、それをどのように働かせることができますか?
あなたの答えに感謝します。私はこのチュートリアル[link](http://www.brandonsavage.net/making-zend_navigation-useful/)でfindOneBy( 'controller')アプローチを見つけました。コントローラーの代わりにラベルを検索すると、実際に出力が得られます。しかし、私はメインメニューを取得します。 ZendはXML構造を正しく読まないようです。 – Benni
xmlが間違っている可能性があります。私は私の答えを更新しました。修正されたxmlを試してください。 –
あなたの提案で私は出力を得ることができます。しかし、私はまだそれに1つの問題があります。もう2つのページを持つ「デバイス」というコントローラがもう1つあるとします。私のサブメニューをレンダリングすると、深みのあるすべてのページを含むメニューが表示されます。しかし、特定のコントローラによって分離されていません。だから私は、特定のラベルを検索するが、ユーザーとデバイスからのすべてのリンクを持つメニューを取得する。私のXMLにはまだ何か問題があるようです。 – Benni