2011-11-18 5 views
3

мне скучно писать это в конце каждого действия в Symfony2:Как передать переменные контроллера в EventListener в Symfony2?

return $this->render('Project:Bundle:view.twig', array(
            'foo' => 1, 
            'bar' => 2 
           )); 

Так что я попытался вклиниться в жизненном цикле запроса только после того, как действие было бежать, чтобы спасти себя некоторые типирование. Я хочу, чтобы иметь возможность сделать что-то похожее на это в мой контроллер вместо:

$this->params = array(
    'foo' => 1, 
    'bar' => 2 
); 

Слушатель бы затем передать Params для визуализации и автоматического определения шаблона, используя имя действия. Я понимаю, что нужно использовать прослушивание событий для достижения этой цели, но я не могу показаться, чтобы вклиниться в жизненный цикл в нужное время ...

  • kernel.controller это хорошо, потому что я могу получить на контроллер, но до того, как действие было запущено, поэтому $ this-> params не будут установлены
  • kernel.response после того, как действие запустилось, но я не могу получить доступ к самому контроллеру из здесь

FYI - У меня есть фон Zend, и это (obv) мой первый раз с использованием Sy mfony2 ... Если я подхожу к этой проблеме совершенно неправильно, кричите!

ответ

2

Если вы используете SensioFrameworkExtraBundle, вы можете использовать @Template() аннотации и возвращаете массив:

<?php 

namespace Acme\FooBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 

class BarController 
{ 
    /** 
    * @Template() 
    */ 
    public function bazAction() 
    { 
     return array(
      'some_value' => $someValue; 
     ); 
    } 
} 

аннотации говорят ему, чтобы искать точки зрения в местоположении по умолчанию на основе расслоения, контроллер и действия имя (в данном случае, AcmeFooBundle:Bar:baz.html.twig).

+0

Ну, если это не совсем то, что мне нужно! Благодаря! – Mathew

 Смежные вопросы

  • Нет связанных вопросов^_^