Zend framework Zend_导航url生成问题
我将导航组件用于站点菜单。我还使用let zend从请求参数中找出所选的菜单项——我想这是自动完成的。唯一的问题是,要使其工作,必须在导航配置中为每个节点指定操作和控制器。这也意味着,当zend从路由、操作和控制器信息生成链接时,会自动附加到生成的链接 有人有同样的问题吗 ,解释Mvc导航页面的功能 例如: 引导中定义的某些路由:Zend framework Zend_导航url生成问题,zend-framework,navigation,Zend Framework,Navigation,我将导航组件用于站点菜单。我还使用let zend从请求参数中找出所选的菜单项——我想这是自动完成的。唯一的问题是,要使其工作,必须在导航配置中为每个节点指定操作和控制器。这也意味着,当zend从路由、操作和控制器信息生成链接时,会自动附加到生成的链接 有人有同样的问题吗 ,解释Mvc导航页面的功能 例如: 引导中定义的某些路由: $router->addRoute('user_profile_tab', new Zend_Controller_Router_Route(
$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匹配仍然有效,因为我们没有以任何方式修改路由或导航节点。您可以提供一个示例吗?也许您应该提交一份错误报告,因为这肯定不是预期的行为: