Php Symfony 2.1 kernel.request事件无法覆盖\u控制器

Php Symfony 2.1 kernel.request事件无法覆盖\u控制器,php,symfony,twig,symfony-2.1,Php,Symfony,Twig,Symfony 2.1,我正在尝试向特定控制器发送一些请求。我在这里遵循克里斯·沃史密斯的答案: 但是,当我重写请求的_controller属性时,我的模板不再使用基本模板修饰 我做错了什么 以下是我的侦听器服务: //src/Acme/DemoBundle/RequestListener.php 名称空间Acme\DemoBundle; 使用Symfony\Component\HttpKernel\HttpKernelInterface; 使用Symfony\Component\HttpKernel\Event\G

我正在尝试向特定控制器发送一些请求。我在这里遵循克里斯·沃史密斯的答案:

但是,当我重写请求的_controller属性时,我的模板不再使用基本模板修饰

我做错了什么

以下是我的侦听器服务:

//src/Acme/DemoBundle/RequestListener.php
名称空间Acme\DemoBundle;
使用Symfony\Component\HttpKernel\HttpKernelInterface;
使用Symfony\Component\HttpKernel\Event\GetResponseEvent;
类请求侦听器
{
onKernelRequest公共函数(GetResponseEvent$事件)
{
如果(某些逻辑){
$request=$event->getRequest();
$request->attributes->set(“\u controller”,“Acme\DemoBundle\controller\DefaultController::testAction”);
}
}
}
这是我的模板:

{# src/Acme/DemoBundle/Resources/views/Default/test.html.twig #}
{% extends '::base.html.twig' %}

{% block title %}Test{% endblock %}

{% block body %}
    {{ body | markdown }}
{% endblock body %}
这是我的控制器:

//src/Acme/DemoBundle/Controller/DefaultController.php
/**
*@Route(“/test”)
*@Template()
*/
公共函数测试()
{
返回$this->render('AcmeHelloBundle:Default:test.html.twig',数组('body'=>'test');
}

不知道它是否有帮助,但在2.0中我使用

$controller = $event->getController();
$event->setController(controller);

您必须使用kernel.controller事件


FilterControllerEvent
作为参数传递给侦听器方法,并使用事件类的
setController、getController
方法。

感谢您的建议,但是
GetResponseEvent$event
没有
getController()
方法。当我尝试您的建议时,我得到以下错误:
致命错误:调用未定义的方法Symfony\Component\HttpKernel\Event\GetResponseEvent::getController()