2012-06-06 12 views

Respuesta

23

No hay método de acción previa en Symfony2. Tienes que usar event listeners para ese fin.

+3

maldito, está bien. Gracias;) – bux

+0

Tengo que agregar que aunque no existe un método de acción previa per se, el evento 'kernel.controller' es probablemente lo que usted desea. – PhoneixS

15

Probablemente el uso de los oyentes es la forma más elegante para poner en práctica "después de tareas de controlador inicializado", pero no hay manera más simplificada para hacerlo:

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... 
} 

Inserte este código en su controlador, o, si lo prefiere, puede incluso insertarlo en la abstracción principal básica de sus controladores.

porque el contenedor se establecerá en cada controlador cuando se inicialice, podemos anular el método setContainer para realizar algunas tareas después de configurar el contenedor.

+0

¡Interesante! Voy a probar que :) – bux

+0

Esto necesita 'usar Symfony \ Component \ DependencyInjection \ ContainerInterface;' – totas

+0

Gran respuesta. Funciona. Yo elegiré de esta manera. – Sithu

Cuestiones relacionadas