CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 01-06-2015 17:23:25

baker033
Chouquette
Date d'inscription: 01-06-2015
Messages: 4

[RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Salut à tous,

Sous cakephp 2.x, je gérai parfaitement mes préfixes 'admin' ou autre avec les template ou thème qui leur était associé.

Mais depuis le passage à 3.0.x, je suis complètement perdu ;(((

Ce que je souhaite faire :
* Un Backend avec le préfixe 'admin' et le thème 'Backend' ;
* Un Frontend sans préfixe et avec un thème 'Frontend' ;

J'ai évidemment commencé par coder mon Backend mais je bloque complet pour l'implémentation du FrontEnd. Pour être plus précis voici quelques lignes de mon code :

routes.php

Code: php

  1. <?php
  2. use Cake\Core\Plugin;
  3. use Cake\Routing\Router;
  4.  
  5. // On prefixe 'admin' pour les url d'administration
  6. Router::prefix('admin', function ($routes) {
  7.     $routes->fallbacks('InflectedRoute');
  8. });
  9.  
  10. Router::defaultRouteClass('Route');
  11.  
  12. Router::scope('/', function ($routes) {
  13.     // Connexion du home
  14.     $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
  15.    
  16.     // Connexion de l'administration
  17.     $routes->connect('/administration', ['controller' => 'Users', 'action' => 'login', 'prefix' => 'admin']);
  18.  
  19.     // Connexion des pages statiques
  20.     $routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
  21.  
  22.     $routes->fallbacks('InflectedRoute');
  23. });
  24.  
  25. Plugin::routes();

AppController.php

Code: php

  1. <?php
  2. namespace App\Controller;
  3.  
  4. use Cake\Controller\Controller;
  5.  
  6. class AppController extends Controller
  7. {
  8.     public $helpers = array('Html', 'Form', 'Time', 'Session', 'Url');
  9.     public $components = array('Auth');
  10.    
  11.     public function initialize()
  12.     {
  13.         // Chargement des composants
  14.         $this->loadComponent('Flash');
  15.        
  16.         // Initialisation de l'authentification
  17.         $this->setAuth();
  18.        
  19.         // Initialisation du theme
  20.         $this->setTheme();
  21.        
  22.         // S'il s'agit de l'administration
  23.         if(isset($this->request->params['prefix']) && $this->request->params['prefix'] == 'admin')
  24.         {  
  25.             // Initialisation des données de Session supplementaires
  26.             $this->setParams();
  27.  
  28.             // Initialisation des categories d'articles
  29.             $this->setCategories();
  30.         }
  31.        
  32.     }
  33.    
  34.     private function setAuth()
  35.     {
  36.         $this->loadComponent('Auth', [
  37.             'loginRedirect' => [
  38.                 'controller' => 'Dashboards',
  39.                 'action' => 'index',
  40.                 'prefix' => 'admin'
  41.             ],
  42.             'logoutRedirect' => [
  43.                 'controller' => 'Users',
  44.                 'action' => 'login',
  45.                 'prefix' => 'admin',
  46.                 'home'
  47.             ],
  48.             'authError' => 'Vous ne pouvez pas accéder à cette section !'
  49.         ]);  
  50.     }
  51.    
  52.     private function setTheme()
  53.     {
  54.         if(isset($this->request->params['prefix']) && $this->request->params['prefix'] == 'admin')
  55.             $this->theme = 'Backend';
  56.         else
  57.             $this->theme = 'Frontend';
  58.     }
  59. }

Il y a quelques choses que je ne maîtrise pas et j'aimerai vraiment mettre le doigt dessus.
Les ressources sur le web sont encore très faibles et j'en appelle donc à votre connaissance.
Je vous en remercie par avance !

Dernière modification par baker033 (12-06-2015 16:57:29)

Hors ligne

 

#2 09-06-2015 15:51:45

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Salut,
j'ai beau creuser, je ne vois pas. Peut-être en rajoutant une option dans la déclaration de ton prefix ? :

Code: php

  1. Router::prefix('admin', ['param' => 'admin'], function ($routes) {
  2.     $routes->fallbacks('InflectedRoute');
  3. });

Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#3 10-06-2015 10:36:39

baker033
Chouquette
Date d'inscription: 01-06-2015
Messages: 4

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Salut et merci pour ta réponse.

Néanmoins, même avec ton idée, ce que j'attends ne se produit pas.

Je suis sans cesse redirigé directement vers ../users/login lorsque je demande mon 'home'

Je pense que c'est plutôt un problème d'authentification qui doit être mal définie...Mais je sèche franchement....

Dernière modification par baker033 (10-06-2015 10:36:57)

Hors ligne

 

#4 10-06-2015 11:11:42

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

ca ne renvoie pas vers :
/admin/users/login ?


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#5 10-06-2015 11:48:39

baker033
Chouquette
Date d'inscription: 01-06-2015
Messages: 4

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Et non, même pas ! C'est pourtant le comportement que j'attendrai aussi vu le préfixe et la route définie dans le composant Auth !!

Hors ligne

 

#6 12-06-2015 16:44:46

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Il me semble que si tu rajoutes un prefixe à une route, tu dois créer un controller spécifique à la route, dans ton cas :

Code: php

  1. // Connexion de l'administration
  2.     $routes->connect('/administration', ['controller' => 'Users', 'action' => 'login', 'prefix' => 'admin']);

Tu devrais avoir un UsersControllers dans le chemin /app/src/Controller/admin/


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

#7 12-06-2015 16:57:12

baker033
Chouquette
Date d'inscription: 01-06-2015
Messages: 4

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Alors j'ai trouvé d'ou venais le problème...

Mon AppController.php ne faisait en aucun cas mention des methodes autorisées sans Auth.
Il suffisait simplement d'ajouter :

Code: php

  1. public function beforeFilter(Event $event)
  2. {
  3.     $this->Auth->allow(['index', 'view', 'display']);
  4. }

J'ai inclus ces autorisations dans mon AppController.php mais il me semble judicieux de les intégrer au cas par cas au sein de chaque controller par la suite.

En tout cas merci pour votre aide !

Hors ligne

 

#8 14-06-2015 12:28:51

cyberbobjr
Baker
Date d'inscription: 13-07-2010
Messages: 625

Re: [RESOLU] Cakephp 3.0 et Switch entre template admin et normal

Super, merci beaucoup pour ton retour, ca risque d'en aider plus d'un.
Bonne journée.


Développeur freelance et disponible, contactez-moi en privé.
Mon blog CakePHP : http://caketuts.key-conseil.fr

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr