从控制器 Symfony2 中的 URL 获取参数

Posted

技术标签:

【中文标题】从控制器 Symfony2 中的 URL 获取参数【英文标题】:Get parameters from URL in Controller Symfony2 【发布时间】:2015-02-07 00:45:57 【问题描述】:

我尝试通过 get 方法提交表单,但是在控制器中我无法获取值,这里是控制器:

  var_dump($request->query->get('startPoint')); // its NULL

我的表格:

<form id="s_f" action =" path('trip_search') " method="get" novalidate="">
     form_widget(search_form, 'attr': 'class': 'search_form' ) 
</form>

生成的网址:

http://example.com/app_dev.php/search_trips?search_form%5BstartPoint%5D=3123123&search_form%5BendPoint%5D=&search_form%5

可能与 URL 中的符号 %5D 相关的问题?有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

如果找不到 QS 值,请这样做:

var_dump($request->query->all());

它显示所有 QS 值;

在您的情况下,您可以通过以下方式访问您的 QS 数据:

$formData = $request->query->get('search_form');

$formData = $request->query->get($form->getName());

它返回值数组,之后你可以像这样访问startPoints

$formData['startPoints']

【讨论】:

【参考方案2】:

你应该写$request-&gt;get('startPoints')而不是$request-&gt;query-&gt;get('startPoint')

【讨论】:

不,你不应该!它慢得多。来自 PHPDoc:避免在控制器中使用此方法:* 慢,* 更喜欢从“命名”源获取。最好从适当的公共属性(查询、属性、请求)中显式获取请求参数。

以上是关于从控制器 Symfony2 中的 URL 获取参数的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 获取路由参数(控制器参数与请求)

从 url 获取路由

如何在 Symfony2 中获取控制器的所有路由列表?

Symfony 2 URL结构中的可选文化参数?

在命令中调用控制台命令并在 Symfony2 中获取输出

Symfony2:控制器中动作/路由的完整路径