【问题标题】:Symfony 2.0 - How to create route with array-parameters?Symfony 2.0 - 如何使用数组参数创建路由?
【发布时间】:2012-01-11 09:10:41
【问题描述】:

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

示例:

名称_节目: 模式:/Name/{names} 默认值:{ _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 文档中找不到任何解决方案。

【问题讨论】:

    标签: routing symfony


    【解决方案1】:

    你可以把它当成一个字符串,只用serialize()之前和之后的内容。

    据我所知 symfony2 不允许在路由中使用数组,那么带有数组的 URL 会如何查找? URL 必须是字符串,因此序列化数组并将其作为字符串传递可能是更好的选择。

    【讨论】:

    • 带有数组的 URL 将如下所示:http://domain.com?array[]=lorem&array[]=ipsum
    • @user2019515 是的,但我不确定 symfony2 是否允许这样做
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我同意@JamesHalsall 关于序列化的看法。我还要补充一点,序列化的字符串应该在用作 GET 参数之前进行 urlencoded。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-07
        • 1970-01-01
        • 2019-01-30
        • 2013-10-02
        • 2020-02-05
        • 2015-11-21
        • 1970-01-01
        • 2020-09-19
        相关资源
        最近更新 更多