我使用位于config/autoload
的全局文件在Zend Framework 2中进行了导航。如何在此全局文件中获取路由参数?
我试过这个:
$helper = new Zend\View\Helper\ServerUrl();
$active_url = $helper->getHost();
但这会返回整个网址。 对于exemle,我有一个这样的网址
www.mysite.com/controller/action/id/3
我需要知道身份证。
我的全局文件返回一个如下所示的导航数组:
return array(
'navigation' => array(
'default' => array(
array(
'label' => 'Home',
'route' => 'admin',
'active' => true,
'resource' => 'Admin\Controller\Index',
'privilege' => 'index',
'pages' => array(
'label' => 'My posts ',
'route' => 'admin/default',
'params' => array(
'controller' => 'posts',
'action' => 'edit'
),
'resource' => 'Admin\Controller\Posts',
'privilege' => 'edit',
),
)
)
)
);
只要路线不包含参数,一切正常。如果我的网址包含ID参数,我的菜单链接和面包屑只是与控制器和没有ID的动作形成,并且在同一个地方。
所以,而不是:
www.mysite.com/posts/edit/id/12
我的链接如下:
www.mysite.com/posts/edit
答案 0 :(得分:1)
您正在寻找的是动态面包屑。将面包屑与路线参数联系起来并不常见,但您可以找到一个带有答案here on stackoverflow的问题。
同样写在the documentation here中,自ZF2 2.2.0版开始,'useRouteMatch'
标志就可以设置为true
。
从版本2.2.0开始,如果要在生成链接时重新使用任何匹配的路由参数,可以通过“useRouteMatch”标志执行此操作。在创建包含当前所选语言或区域设置作为初始段的段路由时,这尤其有用,因为它确保生成的链接都包含匹配值。
导航器将使用params
中的params
,而不是手动传递RouteMatch
。因此,您的身份证也可以使用。
array(
'label' => 'My posts',
'route' => 'admin/default',
'useRouteMatch' => true
),
注意您说您在global
文件夹的autoload/config
文件中定义了导航。最好在module.config.php
中实施导航,如图所示here in this tutorial。