2012-09-30 2 views
0

특정 컨트롤러에 일부 요청을 보내려고합니다. 여기 크리스 Wallsmith의 답변을 다음 해요 :symfony 2.1 kernel.request 이벤트가 _controller를 오버라이드 할 수 없습니다.

Symfony2 routing rules from database

그러나 내가 요청의 _controller 내 템플릿이 더 이상 기본 템플릿으로 장식되어 속성 없습니다 오버라이드 (override) 할 때.

내가 뭘 잘못하고 있니?

다음
{# 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/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/Controller/DefaultController.php 

/** 
* @Route("/test") 
* @Template() 
*/ 
public function testAction() 
{ 
    return $this->render('AcmeHelloBundle:Default:test.html.twig', array('body' => 'test')); 
} 

답변

0

는 모르겠지만, 2.0에서

여기 내 수신 서비스입니다 내가 사용한다

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

Chopchop의 조언에 감사하지만'GetResponseEvent $ event'에는'getController()'메소드가 없습니다. 귀하의 제안을 시도 할 때 다음과 같은 오류가 발생합니다 :'치명적인 오류 : 정의되지 않은 메서드 호출 Symfony \ Component \ HttpKernel \ Event \ GetResponseEvent :: getController()' – mattvick

관련 문제