Php Zend Framework 2:捕获所有路由和url转义

Php Zend Framework 2:捕获所有路由和url转义,php,routing,zend-framework2,Php,Routing,Zend Framework2,我正在尝试创建或找到一条基本上可以覆盖所有内容的路线。 我需要的是一个可以像下面这样传递信息的东西 /some-page/some-childpage/another-childpage /another-page /yet-anotherpage/page 这些url与任何模块都不相关,因此管理员可以在任何url上创建页面 我已经有了一些东西,可以使用通配符路由和子通配符路由捕获当前的路由,但是当我在URL视图帮助器中使用它时,它在“URL”参数中对正向斜杠进行编码。 基本上: $this-

我正在尝试创建或找到一条基本上可以覆盖所有内容的路线。 我需要的是一个可以像下面这样传递信息的东西

/some-page/some-childpage/another-childpage
/another-page
/yet-anotherpage/page
这些url与任何模块都不相关,因此管理员可以在任何url上创建页面

我已经有了一些东西,可以使用通配符路由和子通配符路由捕获当前的路由,但是当我在URL视图帮助器中使用它时,它在“URL”参数中对正向斜杠进行编码。 基本上:

$this->url( 'public_page', array( 'url' => 'foo/bar' ) )
正在输出
/foo%2Fbar

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

任何帮助和建议都会很好

问候,,
Michael

我不确定你可以用任意数量的片段来实现这一点。您可以指定一条具有预期最大分段数的分段管线,然后只允许它们都是可选的,但如果您试图使用大量分段,这似乎是一种肮脏的做法

'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',
    ),
你可以用正则表达式的方法来完成一些事情,但同样的,这也可能是令人讨厌的


我可能会建议使用更好的url结构,因为深度不太好的url。

我尝试构建url,因为我有包含斜杠的永久链接,但当url从url帮助器组装时,它们会被转义。有类似的东西:。这和过去表单中的标签逃跑一样痛苦。