Bonjour à tous.
Pour une fois je me suis réflexionné sur cette idée. Est-il possible de créer une variable global, qui lorsqu'elle est activée, toutes les url du site internet (sauf celles concernée par un prefix admin et les actions du controller users) seraient redirigés vers une page de maintenance dans la quelle on pourrait voir un décompte de réouverture, un message, ect.
Bien sur, tous ça pour éviter de rajouter un controller Site qui interagit avec la base de donnée et donc éviter des traitement supplémentaires.
Vous pensez que c'est faisable? :D
J’espère que quelqu'un me répondra rapidement et qu'il aurait fait une chose du genre, j'en aurais besoin rapidemnt ^^. Merci d'avance :)
Alors dans le bootstrap.php (dans Config) je mets la ligne :
Config::write('Maintenance',true);//Ou false si je suis plus en maintenance...
Puis dans le fichier AppController.php dans les controllers, dans la fonction beforeFilter, je fais en sorte de bloquer seulement les controllers de présentation (pages, services et products). Je ne bloque surtout pas le prefix admin et les controllers contact et medias. Bien sur je change le layout par default pour éviter de faire appel à des éléments en maintenance. J'ai aussi créé un controller maintenance qui a une fonction index seulement pour afficher le message de maintenance (d'ailleur il se peut du coup que votre message soit en base de donnée, ce qui n'est pas le cas pour moi ^^). Ca donne ça :
if(Configure::read('Maintenance')){//Si la variable Maintenance est à true!
if(isset($this->request->params'prefix']) && ($this->request->params'prefix'] == 'admin' or $this->request->params'prefix'] == 'membre')){//Je vérifie le prefix
$this->layout = 'admin'; // et j'y place le layout admin (oui pour l'administration)
}else{
$this->layout = 'maintenance';//Si non je suis en maintenance quoi qu'il arrive
if($this->request->params'controller'] == 'pages' or $this->request->params'controller'] == 'products' or $this->request->params'controller'] == 'services'){
$this->redirect(array('controller'=>'maintenance','action'=>'index'));//Redirection vers la page de maintenance.
}
}
}
}
Voilà :D
J'ai trouvé par moi même une chose intéressante.
Seulement ils n'expliquent pas comment on peut laisser l'accès au controller users et à toutes les pages prefixé par admin...
Ils disent d'utiliser Configure::write et read dans le boostrap et AppController avec une fonction beforeFilter.
Salut, peux tu poster ta solution ? Je suis sûr que cela pourra servir à un quelqu'un un jour ou l'autre. Moi le premier.
Merci