0

特定のコントローラーにいくつかのリクエストを送信しようとしています。ここでクリス・ウォールスミスの答えに従っています:

データベースからの Symfony2 ルーティング規則

ただし、リクエストの _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'));
}
4

2 に答える 2

0

それが役立つかどうかはわかりませんが、2.0では使用します

$controller = $event->getController();
$event->setController(controller);
于 2012-10-01T11:02:35.810 に答える