Héritage de Controller, bloquage de traitement
Bonjour, je me suis mis depuis peu à Symfony2 et j'aurais une question par rapport aux Controller. Je vous explique le principe.
Je possède deux Controller A et B qui nécessitent que l'utilisateur soit connecté avant d'exécuter n'importe quelle méthodeAction.
Ce que j'aimerais, c'est que A et B héritent d'un controller X qui vérifie si l'user est connecté et si ce n'est pas le cas, qu'il bloque l'exécution et donc que les méthodes appelées (de A ou B) ne s'exécutent pas.
Pour le moment, voici un exemple de ce que j'ai.
Classe Mère : X
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class ConnectController extends Controller
{
public function isConnected()
{
return ($this->get('session')->get('user_id') != null);
}
public function renderNoConnect()
{
return $this->render('template_pour_connexion');
}
} |
Exemple classe fille : A ou B
Code:
1 2 3 4 5 6 7 8 9 10 11
| class AController extends ConnectController
{
public function indexAction()
{
if(!parent::isConnected())
return parent::renderNoConnect();
return $this->render('templateA');
}
} |
Ici, si l'user n'est pas connecté lors de l'appel de la méthode index de AController, la template pour la connexion va s'afficher. Ce code est pas mal redondant puisqu'il va falloir copier/coller la condition dans toute les méthodes du controller A ...
J'ai essayé quelques tricks avec _call(), mais sans succès.
Si certain on des idées, je suis preneur, merci d'avance ;)