【发布时间】:2015-12-18 19:20:47
【问题描述】:
我使用位于config/autoload 的全局文件在 Zend Framework 2 中进行了导航。如何在这个全局文件中获取路由参数?
我试过这个:
$helper = new Zend\View\Helper\ServerUrl();
$active_url = $helper->getHost();
但这会返回整个网址。 例如,我有一个这样的网址
www.mysite.com/controller/action/id/3
我需要知道 id。
我的全局文件返回一个如下所示的导航数组:
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',
),
)
)
)
);
只要路由不包含参数,一切都可以正常工作。如果我的 url 包含一个 ID 参数,我的菜单链接和面包屑只是由没有 ID 的控制器和动作组成。
所以,而不是:
www.mysite.com/posts/edit/id/12
我的链接如下:
www.mysite.com/posts/edit
【问题讨论】:
-
你为什么要这样做?
config/autoload文件夹中的全局和本地文件应该仅用于声明常量,而不是用于动态内容。如果你这样做,你会遇到麻烦。如果您不添加更多关于您想要实现的目标的详细信息,则很难提供替代解决方案...... -
在路由发生之前加载配置。你将无法做到这一点。
-
@Wilt 我编辑了我的帖子。
-
@TimFountain 谢谢,我会尝试寻找其他解决方案
标签: php zend-framework zend-framework2 zend-route