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

Posted

技术标签:

【中文标题】Symfony 2.0 - 如何使用数组参数创建路由?【英文标题】:Symfony 2.0 - How to create route with array-parameters? 【发布时间】: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 文档中找不到任何解决方案。

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于Symfony 2.0 - 如何使用数组参数创建路由?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony 2.0 中使用 Linux Xampp mysql_pdo

如何在 Symfony 2.0 AJAX 应用程序中将 Doctrine 实体编码为 JSON?

将参数传递给 symfony 5.4 表单测试不起作用

Symfony 2.0 在实体内部获取服务

Symfony2功能测试用例不包括自定义依赖注入配置参数

Symfony 2,QueryBuilder,多个和Where具有相同的参数