Salut,
Je me heurte à un soucis sous Cakephp 3.0, je souhaiterai utiliser plusieurs layout suivant le role de l'utilisateur, guest, user, admin et supadmin.
Chaque profil a une construction de page différente. en gros c'est ce qui suit.
Je pensais faire un petit
$this->layout='default|logged|supadmin';
dans la methode isAuthorized de mon AppController, (ou dans une autre d'ailleurs), mais rien ne fonctionne.
Je ne sais pas comment m'y prendre, et peut être (sûrement) que je m'y prend mal d'ailleurs, il y a peut être un mécanisme intégré dans cake 3 pour faire ce genre de chose, mais je n'ai rien trouvé.
Si une âme charitable pouvait m'éclairer ?
à la limite, je dois pouvoir m'en tirer avec 2 templates, un pour la partie loguée et un pour la partie non loguée si c'est plus simple.
Tu as tester dans la methode beforeFilter() de l'AppController ?
Chez moi ca fonctionne parfaitement.
https://github.com/Xety/Xeta/blob/master/src/Controller/AppController.php#L130
Tu peut p-e le faire avec des themes
http://book.cakephp.org/3.0/fr/views/themes.html
et tu verifi le role de ton usager dans un beforeRender et tu difini le layout ou le theme.
http://book.cakephp.org/3.0/fr/controllers.html#Cake\Controller\Controller::beforeRender
A ta place je nommerais tes layouts du même nom que tes rôles guest.ctp, user.ctp, ... puis :
$this->layout = $user[role];
@makamo : Merci, je vais regarder si les thèmes peuvent correspondre à la façon dont je voudrais que ça se passe.
@amethyste : pourquoi pas, mais j'ai des profils qui partagent le même layout, user et admin par exemple, ça m'obligerait à dubliquer un layout. Mais ce sera dans le même esprit, je passerais sûrement par un tableau intermédiaire,
$this->layout = $layout[$user['role']];
Mais mon principal problème persiste, je ne peux pas changer le layout dans AppController.php , il me semble que sur la version 2 de cakephp c'était possible. Ce qui m'obligerait à choisir le layout dans chaque controller.
Mais je pense que je m'y prend mal, parce que je ne connais pas assez le fonctionnement du framework.
Mon idée était de changer le layout "au dernier" moment dans AppController suivant le rôle, mais visiblement ça ne marche plus dans AppController. :'(
Je continue de chercher.
Mais que j'ai honte !!! :'(
En fait, je faisais mes tests avec le controlleur PagesController qui visiblement se moque qu'on change le layout, avec un Controlleur normal ,from scratch, dans le beforeFilter ou dans isAuthorized (mais c'est pas sa place ici en fait) ça marche.
Merci en tous cas.