Symfony 2.0 - 如何使用数组参数创建路由?

时间:2011-12-02 10:03:58

标签: routing symfony

我想创建一个匹配数组的路由。

示例:

    Name_show:
        pattern:  /Name/{names}
        defaults: { _controller: testBundle:Name:showNames }

其中{names}包含一系列名称,例如:

array([1] => 'Thomas', [2] => 'Anton', [3] => 'Berta');

如何处理? Symfony 2.0回复

Warning: preg_match() expects parameter 2 to be string, array given

在symfony doc中找不到任何解决方案。

3 个答案:

答案 0 :(得分:3)

您可以将其用作字符串,只需serialize()之前和之后的内容。

据我所知symfony2不允许路由中的数组,URL看起来如何使用数组? URL必须是一个字符串,因此序列化数组并将其作为字符串传递可能是更好的选择。

答案 1 :(得分:1)

我同意@JamesHalsall有关序列化的内容。我还要补充说,序列化字符串应该在被用作GET参数之前进行urlencoded。

答案 2 :(得分:0)

您必须验证路由,因此要么使用一些人为的事件处理(请参阅kernel.controller event),要么使用一个控制器,如果Name在阵列中或显示错误页面,它只是重定向到新的URL。

此外,您可以尝试使用ChainRouter代替默认的Symfony2路由器(支持基于Doctrine的路由等)。