0
// 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;
    }

当我调用 URL 时

/foobar?foo=bar

然后它返回空数组。相反,它应该返回 GET 参数。

如何在 symfony 中处理 GET 请求?

4

2 回答 2

2

它永远不会像这样工作,原因有两个:

  • 据我所见,它正在获取应有的查询字符串,但setContent有点混乱。第一个参数不应该是数组,而是字符串。所以$var[0]将工作并将内容设置为foo.

  • 另外,您的路由有点错误。您的模式是/foobar,但您尝试打开/foobar/的模式不一样。如果设置pattern: /foobar/,则可以同时使用/foobar/and /foobar(实际上重定向到/foobar/)。

但是,query->keys()在这种情况下,这将只返回键。如果你想同时获取键和值,你应该只使用query->all()orquery->get('foo')的值foo

此外,您不需要使用请求,$request = $this->getRequest();因为请求已经是您操作中的第一个参数。你可以直接使用它。

setContent在这种情况下也有点没用,因为Response已经调用它的第一个参数,所以你可以在那里设置它而不使用额外的函数调用。

于 2012-04-25T11:22:57.197 回答
2

pattern尝试在例如添加斜杠

pattern:  /foobar/

它还将确保路由匹配/foobar/foobar/模式。

于 2012-04-25T11:03:24.053 回答