如何解析Symfony2中的url?

时间:2012-04-25 09:27:16

标签: php symfony

// 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请求?

2 个答案:

答案 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的第一个参数已经调用它,所以你可以在那里设置它而不需要额外的函数调用。