Я пытаюсь отправить некоторые запросы на конкретный контроллер. Я следую за ответ Kris Wallsmith здесь:Symfony 2.1 kernel.request событие не может переопределить _controller
Symfony2 routing rules from database
Однако, когда я переопределить атрибут не _controller просьбы в моем шаблоне больше не оформлен с базовым шаблоном.
Что я делаю неправильно?
Вот мой слушатель службы:
// src/Acme/DemoBundle/RequestListener.php
namespace Acme\DemoBundle;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class RequestListener
{
public function onKernelRequest(GetResponseEvent $event)
{
if (some logic) {
$request = $event->getRequest();
$request->attributes->set('_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()
*/
public function testAction()
{
return $this->render('AcmeHelloBundle:Default:test.html.twig', array('body' => 'test'));
}
Спасибо за совет Chopchop, но 'GetResponseEvent $ event' не имеет метода getController(). Когда я попробую ваше предложение, я получаю следующую ошибку: «Неустранимая ошибка: вызов неопределенного метода Symfony \ Component \ HttpKernel \ Event \ GetResponseEvent :: getController()' – mattvick