Zend framework Zend_导航url生成问题

Zend framework Zend_导航url生成问题,zend-framework,navigation,Zend Framework,Navigation,我将导航组件用于站点菜单。我还使用let zend从请求参数中找出所选的菜单项——我想这是自动完成的。唯一的问题是,要使其工作,必须在导航配置中为每个节点指定操作和控制器。这也意味着,当zend从路由、操作和控制器信息生成链接时,会自动附加到生成的链接 有人有同样的问题吗 ,解释Mvc导航页面的功能 例如: 引导中定义的某些路由: $router->addRoute('user_profile_tab', new Zend_Controller_Router_Route(

我将导航组件用于站点菜单。我还使用let zend从请求参数中找出所选的菜单项——我想这是自动完成的。唯一的问题是,要使其工作,必须在导航配置中为每个节点指定操作和控制器。这也意味着,当zend从路由、操作和控制器信息生成链接时,会自动附加到生成的链接

有人有同样的问题吗

,解释Mvc导航页面的功能

例如:

引导中定义的某些路由:

 $router->addRoute('user_profile_tab', new Zend_Controller_Router_Route(
            'profil/:user/:location/:tab/*',
            array(
                'action'     => 'profile',
                'controller' => 'user',
                'user'      => ($user ? $user->id : 0), //change later
                'location'      => 0 //inject appropriate value later
            )
        ));
导航容器对象:

$container = .....
......,
array(
       'label' => tr('Privileges'),
        'id'    => 'user-profile-perms',
    'type' => 'Zulu_Navigation_Page',
    'controller' => 'user',
    'action' => 'profile',
    'route'=> 'user_profile_tab',
        'params' => array('tab'=>Main_Lib_Common::NAVI_USER_TAB_PERMS)
)
);
使用时的结果

$page = $container->getById('user-profile-perms');
$page->href;

http://www.example.com/profil/1/0/3/controller/user/action/profile
为什么要在您询问的导航容器对象中使用action和Controller参数。$page->isActive()检查需要这些数据才能进行完美匹配

修复方法:


扩展mvc导航页面并提供另一种getHref()方法。。。当路由没有定义动作、控制器和模块参数时,它会删除这些参数。

我这样做是为了修复这种奇怪的行为:

  • 扩展mvc导航页面
  • 提供另一个getHref()方法
  • 检查没有操作、控制器和模块参数的路由,并在生成href之前将其从params数组中删除

这样,isActive匹配仍然有效,因为我们没有以任何方式修改路由或导航节点。

您可以提供一个示例吗?也许您应该提交一份错误报告,因为这肯定不是预期的行为: