我正在尝试创建或找到一条基本上可以捕获所有路线的路线。 我需要的是可以路由以下内容的东西;
/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参数时,它将查询字符串返回到第一个/.
任何帮助和建议都会很棒!
此致 迈克尔
答案 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
我可能会建议使用更好的网址结构作为深度不太好的网址。