Zend Framework 2:捕获所有路由和URL逃脱

时间:2013-01-02 15:22:24

标签: php routing zend-framework2

我正在尝试创建或找到一条基本上可以捕获所有路线的路线。 我需要的是可以路由以下内容的东西;

/some-page/some-childpage/another-childpage
/another-page
/yet-anotherpage/page

这些网址与任何模块都不相关,管理员可以在任何网址上创建网页。

我现在有一些使用通配符路由和子通配符路由捕获路由的东西,但是当我在URL视图帮助器中使用它时,它在'url'参数中编码正斜杠。 基本上:

$this->url( 'public_page', array( 'url' => 'foo/bar' ) )

正在输出/foo%2Fbar

除了不允许/ s,当尝试检索url参数时,它将查询字符串返回到第一个/.

任何帮助和建议都会很棒!

此致 迈克尔

1 个答案:

答案 0 :(得分:0)

我不确定你能用任意数量的段来做到这一点。您可以指定一个具有您期望的最大段数的段路由,然后只允许它们全部是可选的,但如果您尝试使用大量段,这似乎是一种肮脏的方式。

'route' => '/:controller[[[[/:action]/:third]/:fourth]/:fifth]',
    'constraints' => array(
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]+',
        'action'     => '[a-zA-Z][a-zA-Z0-9_-]+',
    ),
    'defaults' => array(
        'controller' => 'Application\Controller\IndexController',
        'action'     => 'index',
        'third'      => 'something',
        'fourth'     => 'something-else',
    ),

你可能会用Regex路线完成一些事情,但同样也可能是讨厌的。

http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html#zend-mvc-router-http-regex

我可能会建议使用更好的网址结构作为深度不太好的网址。

相关问题