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>

该配置文件定义了两个导航框,一个是 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从不显示。

任何的想法?

4

2 回答 2

1

findOneByLabel('acc_nav');将在 -tags 中搜索文本,<label>因为存在 nog acc_nav值。它不会找到它。

于 2010-09-23T10:51:32.380 回答
0

我已经复制了这个,这就是发生的事情......

我得到两个链接,一个用于test1,一个用于test2.

我必须删除您的代码,ACL因为我没有它,所以请尝试删除它。如果它可以工作,那么您就知道您的设置ACL不正确。

我只是将包含的导航设置到注册表中,然后将其返回到脚本文件中。这可能不是最好的方法,但考虑到 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 );

?>
于 2010-09-23T10:51:15.663 回答