2010-09-23 66 views
3

我有一個navigation.xml文件:Zend的導航 - 各種導航模塊

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

這個配置文件定義了兩個導航框,一個programm_nav和其他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

有什麼想法?

回答

1

findOneByLabel('acc_nav');將文本搜索在<label>標籤都有效,因爲是NOG acc_nav值。它不會找到它。

+1

謝謝,那幫了:) – 2010-09-23 10:56:46

0

我已經重複這一點,這是發生了什麼事....

我得到兩個環節,一個是test1,一個用於test2

我必須刪除您的ACL的代碼,因爲我沒有它,所以請嘗試刪除此代碼。如果它然後工作,那麼你知道你的ACL的設置是不正確的。

我只是將包含在註冊表中的nav導回到腳本文件中。這可能不是最好的方式,但考慮到ZF的文檔,這是我唯一的解決方案。現在可能更好地記錄下來。

在我引導我

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

?>