将URL参数注入Zend_Navigation菜单

时间:2010-05-10 20:03:38

标签: php zend-framework

是否有人将Zend Navigation与需要动态参数的网址结合使用?

Zend_Navigation在处理静态路由时似乎非常简单,但我无法想办法让它与动态URL参数一起使用。

像这样的路线:

routes.editUser.route = '/users/:id/edit'
routes.editUser.defaults.controller = 'user'
routes.edutUser.defaults.action = 'edit'

在此导航中:

<pages>
  <editUser>
    <controller>users</controller>
    <action>edit</action>
    <route>editUser</route>
  </editUser>
</pages>

除非我为:id指定默认值,否则只会在Zend_Navigation中抛出错误。但是,如果在构造菜单时无法注入实际的用户ID,对我来说没用。

有直接的方法吗?感谢。

1 个答案:

答案 0 :(得分:5)

resources.navigation.pages.profile.params_id = "USER_ID"

// Looks for any navigation pages requiring user information and injects it
$pages = $this->getContainer()->findAllBy('params_id', 'USER_ID');
foreach($pages as &$page){
    $page->setParams(array(
        'id'=>$user->id,
        'username'=>$user->username
    ));
}