2012-09-30 1 views
0

Я пытаюсь отправить некоторые запросы на конкретный контроллер. Я следую за ответ 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')); 
} 

ответ

0

не знаю, если это может помочь, но в 2.0 i использовать

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

Спасибо за совет Chopchop, но 'GetResponseEvent $ event' не имеет метода getController(). Когда я попробую ваше предложение, я получаю следующую ошибку: «Неустранимая ошибка: вызов неопределенного метода Symfony \ Component \ HttpKernel \ Event \ GetResponseEvent :: getController()' – mattvick