Bonjour,
J'utilise le Zend Framework en tant que Framework (et non pas sur le mode librairie à la demande) pour gérer mon site web.
J'ai remarqué que j'avais beaucoup de page statique (qui se contente simplement d'afficher du texte) j'aimerais donc centraliser tous les appels à ces pages au sein d'un même controller, d'une même action et créer une sorte de front-controller pour les pages statiques, afin de pourquoi pas, caché les données etc
Bref... j'ai donc créer un controller render et j'utilise l'action index qui prend un paramètre view censé définir à vue statique à afficher
Voici ma fonction indexAction() :
Première chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public function indexAction() { // Définit un objet requête $r = $this->getRequest(); // Vérifie qu'il y'a des données en GET if ($r->isGET()) { // Cherche la vue à afficher $view = $r->get('view'); $path = $this->view->getScriptPaths(); $path = $path[0]; $path .= 'render'; try { $this->view->addScriptPath($path); echo $this->view->render($view.'.phtml'); } catch (Exception $e) { echo $e->getMessage(); } } }
Bizarrement quand j'essaie d'utiliser la fonction render pour afficher ma vue statique, il ne me met pas le path complet mais s'arrête simplement au répertoire des vues de controller
Autrement dit, les vues de mon controller render sont censées se trouver dans le répertoire : /application/views/scripts/render
Mais quand je lui demande les basePath dans la fonction il ne m'affiche que :
/application/views/scripts/
Je suis donc obligé de récupérer le premier path, ajouter mon répertoire ou se situe les vues statiques et le reinjecté dans les scriptPath (à l'aide de addScriptPaths)
Pas de problème tout s'affiche bien, ou cela se gate c'est quand j'appelle mon render(), le echo provoque une fuite de buffer et le layout ne peut donc plus s'afficher...
En regardant dans les libs View, je vois effectivement cette ligne dans la fonction render :
Voilà j'espère que vous pourrez m'aider, cela m'étonnerait que ça ne soit pas possible avec le Zend Framework alors que c'est un jeu d'enfant avec Symfony par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 return $this->_filter(ob_get_clean()); // filter output
Merci beaucoup.
Cordialement.
Partager