// route
TestTestAppBundle_foobar:
pattern: /foobar
defaults: { _controller: TestTestAppBundle:Default:fooar }
//controller
public function foobarAction(Request $request)
{
$request = $this->getRequest();
$method = $request->getMethod();
$var = $request->query->keys();
$response = new Response('Content', 200, array('content-type' => 'text/html'));
$response->setContent($var);
return $response;
}
当我拨打网址时
/ foobar的?富=酒吧
然后它返回空数组。相反,它应该返回GET参数。
如何处理symfony中的GET请求?
答案 0 :(得分:2)
尝试在pattern
中添加斜杠,例如
pattern: /foobar/
它还将确保路线符合/foobar
和/foobar/
模式。
答案 1 :(得分:2)
由于两个原因,它不会像这样工作:
据我所知,它正在获取查询字符串,但setContent
有点搞砸了。第一个参数不应该是数组,而是字符串。因此,$var[0]
将有效,并将内容设置为foo
。
此外,您的路由有点错误。您的模式为/foobar
,但您尝试打开的/foobar/
不一样。如果您设置pattern: /foobar/
,则可以同时使用/foobar/
和/foobar
(实际上会重定向到/foobar/
)。
然而,在这种情况下,query->keys()
这将只返回键。如果您想同时获取键和值,则应仅使用query->all()
或query->get('foo')
作为foo
的值。
此外,您不需要使用$request = $this->getRequest();
,因为请求已经是您操作中的第一个参数。你可以马上使用它。
setContent
在这种情况下也没用,因为Response
的第一个参数已经调用它,所以你可以在那里设置它而不需要额外的函数调用。