특정 컨트롤러에 일부 요청을 보내려고합니다. 여기 크리스 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'));
}
이
Chopchop의 조언에 감사하지만'GetResponseEvent $ event'에는'getController()'메소드가 없습니다. 귀하의 제안을 시도 할 때 다음과 같은 오류가 발생합니다 :'치명적인 오류 : 정의되지 않은 메서드 호출 Symfony \ Component \ HttpKernel \ Event \ GetResponseEvent :: getController()' – mattvick