从应用程序的任何位置获取GET参数(Symfony2)


Take GET-parameter from any place of application (Symfony2)

我是Symfony的新手,但我发现它是一个非常好的框架。现在我和Yii一起工作,Symfony的一些时刻无法理解。。。对不起)

如何从任何控制器获取GET参数(例如?ref=),处理它的参数(在会话中保存ref ID),并返回当前页面的当前用户,但没有此GET参数?

  1. 创建一个侦听kernel.request事件的事件侦听器
  2. 检查给定的URL是否包含必需的参数,并根据您的需要进行处理
  3. 返回一个重定向响应到相同的URL,但没有ref参数:

    public function onKernelRequest(GetResponseEvent $event) {
        if (!$event->isMasterRequest()) {
            return;
        }
        if (!$event->getRequest()->query->has('ref')) {
            return;
        }
        $ref = $event->getRequest()->query->get('ref');
        // do whatever you need
        $url = ...; // prepare redirect URL
        $event->setResponse(new RedirectResponse($url));
    }
    

您需要使用下一个构造:

http://example?ref=123

public function indexAction(Request $request)
{
    $ref = $request->query->get('ref');
}