【发布时间】:2009-08-27 08:11:01
【问题描述】:
我将导航组件用于站点菜单。我还使用 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() 检查需要这些数据才能完美匹配。
修复:
扩展 mvc 导航页面并提供另一种 getHref() 方法...当路由未定义它们时删除动作、控制器和模块参数。
【问题讨论】:
-
你能举个例子吗?