2012-06-06 11 views

Antwort

23

Es gibt keine Pre-Aktion Methode in Symfony2. Sie müssen event listeners für diesen Zweck verwenden.

+3

Verdammt, okay. Danke;) – bux

+0

Ich muss hinzufügen, dass, obwohl es keine Pre-Action-Methode per se, das Ereignis 'kernel.controller' ist wahrscheinlich, was Sie wollen. – PhoneixS

15

Wahrscheinlich ist Zuhörer mit eleganter Art und Weise zu implementieren „nachdem Controller initialisiert Aufgaben“, aber es gibt einfachere Art und Weise, es zu tun:

use Symfony\Component\DependencyInjection\ContainerInterface; 

/** 
* Override method to call #containerInitialized method when container set. 
* {@inheritdoc} 
*/ 
public function setContainer(ContainerInterface $container = null) 
{ 
    parent::setContainer($container); 
    $this->containerInitialized(); 
} 

/** 
* Perform some operations after controller initialized and container set. 
*/ 
private function containerInitialized() 
{ 
    // some tasks to do... 
} 

Fügen Sie diesen Code in Ihren Controller ein, oder Sie können ihn sogar in eine Basispartition Ihrer Controller einfügen.

Da der Container bei Initialisierung auf jeden Controller gesetzt wird, können wir die Methode setContainer überschreiben, um einige Aufgaben nach dem Container-Set auszuführen.

+0

Interessant! Ich werde das testen :) – bux

+0

Dies benötigt 'symfony \ Component \ DependencyInjection \ ContainerInterface;' – totas

+0

Große Antwort. Es klappt. Ich werde diesen Weg wählen. – Sithu

Verwandte Themen