我将导航组件用于站点菜单。我还使用let zend从请求参数中找出所选择的菜单项 - 我想这是自动完成的。唯一的问题是,为了使其工作,必须在每个节点的导航配置中指定动作和控制器。这也意味着当zend生成从路由,操作和控制器信息到自动附加到生成的链接的链接时。
有人有同样的问题吗?
Zend manual section,解释了Mvc导航页面功能。
示例:
bootstrap中定义的一些路由:
$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
为什么您要求的导航容器对象中的操作和控制器参数。 $ page-> isActive()检查需要此数据才能完美匹配。
THE FIX:
扩展mvc导航页面并提供另一种getHref()方法...当路由没有定义它们时,它会删除动作,控制器和模块参数。
答案 0 :(得分:0)
我这样做是为了解决这个奇怪的行为:
这样,isActive匹配仍然有效,因为我们没有以任何方式修改路径或导航节点。