3

私はnavigation.xmlファイルを持っています:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <nav>
        <programm_nav>
            <label></label>
            <uri>#</uri>
            <pages>
                <all>
                    <label>test1</label>
                    <resource>default:programme</resource>
                    <module>default</module>
                    <controller>programme</controller>
                    <action>list</action>
                    <privilege>index</privilege>
                </all>                      
            </pages>
        </programm_nav>
        <acc_nav>
        <label></label>
            <uri>#</uri>
            <pages>
                <ueb>
                    <label>test2</label>
                    <resource>default:account</resource>
                    <module>default</module>
                    <controller>account</controller>
                    <action>index</action>
                    <privilege>index</privilege>
                </ueb>                      
            </pages>
        </acc_nav>
    </nav>
</config>

この構成ファイルは、2 つのナビゲーション ボックス (1 つは programm_nav、もう 1 つは acc_nav) を定義します。

私のブートストラップでは、次のことを行います。

$navContainerConfig = new Zend_Config_Xml ( APPLICATION_PATH .
'/configs/navigation.xml', 'nav');     

$navContainer = new Zend_Navigation ( $navContainerConfig );

$view->navigation ( $navContainer )->setAcl ( $this->_acl )
->setRole ( Zend_Registry::get ( 'role' ) );

私の見解では、ナビゲーションを表示します。

$navSec = $this->navigation ()->findOneByLabel ( 'acc_nav' );
echo $this->navigation ()->menu ()->renderMenu ( $navSec );

しかし、どのように定義し$navSecても、常に表示されprogramm_nav、別のボックスは表示されません。acc_nav表示されることはありません。

何か案が?

4

2 に答える 2

1

findOneByLabel('acc_nav');acc_nav<label>値がないため、-tags内のテキストを検索します。それは見つかりません。

于 2010-09-23T10:51:32.380 に答える
0

私はこれを再現しましたが、これが起こったことです....

test1用と用の 2 つのリンクを取得しますtest2

あなたのコードをACL持っていないので削除する必要があるので、これを削除してみてください。それが機能する場合は、設定ACLが正しくないことがわかります。

レジストリに含まれるナビゲーションを設定してから、スクリプトファイルに戻しました。これは最善の方法ではないかもしれませんが、これに関する ZF ドキュメントを考えると、それが私の唯一の解決策でした。それは今よりよく文書化されているかもしれません。

私のBootstrapには

function _initNav()
{
    $navContainerConfig = new Zend_Config_Xml ( APPLICATION_PATH . '/configs/navigation.xml', 'nav');     

    $navContainer = new Zend_Navigation ( $navContainerConfig );

    Zend_Registry::set("navigation", $navContainer);        
}

そして、私のビューファイルは次のようになります

<?php

    $navSec = $this->navigation(Zend_Registry::get("navigation"))
        ->findOneByLabel( 'acc_nav' );

    echo $this->navigation()->menu()->renderMenu( $navSec );

?>
于 2010-09-23T10:51:15.663 に答える