控制器中的任意数量的参数?

时间:2015-01-20 13:14:50

标签: symfony

我需要找到解决以下问题的方法:

在基本网址(比如“domain.org/elements”)之后,我需要在这个基本网址后面有一个元素的层次结构,如果是免费的,可能是无限的,用户可以在任何级别添加其他元素,包括元素容器,例如例子的url一些容器和这个层次结尾的1个元素看起来像这些:

domain.org/elements/container-top/container-deeper/container-deeper2/element
domain.org/elements/container-top/container-deeper/container-deeper3/..../container-deeperN/element

问题是:如何在Symfony2控制器中识别这样的路由,而不是使用动态控制器之类的解决方案(我不希望例如将路由保存到DB)?

1 个答案:

答案 0 :(得分:4)

好吧,你可以通过调整要使用的正则表达式来轻松做到这样的事情:

/**
 * @Route("/{parameters}", requirements={"parameters"="[^/]+(/[^/]+)*"})
 */
public function myAction($parameters)
{
    $parameters = explode('/', $parameters);
    // ...
}

上面的正则表达式如下:

一个或多个非正向斜杠字符,由0或更多字符组成(正斜杠字符串由一个或多个非正斜杠字符跟随)