Bonjour,
je souhaiterais récupérer la vue dans laquel je me situe. J'ai vu les méthodes pour récupérer une action, un controleur mais pas pour la vue.
Merci pour vos réponses :P
Version imprimable
Bonjour,
je souhaiterais récupérer la vue dans laquel je me situe. J'ai vu les méthodes pour récupérer une action, un controleur mais pas pour la vue.
Merci pour vos réponses :P
Bonjour,
Peux-tu être plus clair dans ta question, merci.
Yes! autant pour moi.
Alors, on voit ici que l'on peut récupérer un module, un controleur, une action:
http://zend-framework.developpez.com...ontroller-noms
Moi, je voudrais récupérer le nom dans la vue dans laquelle je me situe, si c'est possible.Code:
1
2
3
4
5
6 $this->view->module = $this->getRequest()->getModuleName(); // recupere le module $this->view->controller = $this->getRequest()->getControllerName(); // recupere le controller $this->view->action = $this->getRequest()->getActionName(); // recupere l'action
Par exemple, tu as un lien :
http://localhost/zendf/public/index/contact
Je voudrais récuperer 'contact'. Un peu dans ce style la $_SERVER['REQUEST_URI'] mais sans toute l'url. :P
J'espère avoir été clair, sinon dis le moi!
Bien si tu utilise le MVC, ton fichier est une concaténation des trois ékléménts situé ci-dessus + l'extension .phtml.
Sinon il y a __FILE__
Oui, j'utilise le MVC(je débute).
Ces 3 méthodes me retournent respectivement ceci :
Code:
1
2
3
4
5
6
7 echo $this->module.'<br>'; //retourne : default echo $this->controller.'<br>'; //retourne : index echo $this->action.'<br>'; //retourne : chemin
Mais j'arrive pas récupérer le nom de la vue dans laquelle je me situe.
La variable $_SERVER['REQUEST_URI'], si je me situe
:fleche: sur ma page 'contact' , je récupère :/zendf/public/index/contact
:fleche: sur ma page portefolio ca sera /zendf/public/index/portefolio
etc...
Je pourrais aller chercher ma vue directement dans cette url, mais je me dis qu'il doit avoir quelque chose de plus agréable, que de faire du bidouillage :aie:
Je suis pas sur, puisque ta vue doit porter le nom de ton Action.
pas sur de quoi? :roll:
Bonjour miya,
Y une toute petite chose que je voudrais comprendre, en plus du but que je ne comprends bien.
Par défaut, le nom de la vue dans laquelle tu trouves est le nom de l'action (+.phtml) du contrioller dans le dossier qui prote le nom du controller.
Donc tu as le nom de la vue avec le nom de l'action, à mon que tu fasses un render() dans ton controller et alors c'est toi qui a choisi abitrairement choisi une vue dont tu dois aussi connaître le nom...
Dis moi si j'ai raté un épisode.
A+,
Olivier
En faite le but de tout ca c'est de créer mon chemin de fer. Donc pour cela, je dois savoir dans quelle vue je me situe, et je remonte à ces parents. Dans un nouveau post, je posterai dans la journée l'ensemble du code, pour savoir ce qu'en pense le forum.
vous me donnerez vos avis :king:
myia,
Juste par curiosité, j'ai un peu regardé la doc pour voir de quelle manière tu pourrais récupérer le script de vue.
Voici les 2 solutions que j'ai trouvé :
1. Dans l'action de ton controller, tu peux faire :
Attention, ici tu auras le chemin començant par le repertoire du controller, pas ce qui vient avantCode:
1
2
3
4
5 public monAction() { ... // Ici tu passe le chemin de ton script de vue à la variable currentScript $this->view->currentScript = $this->getViewScript(); }
2. Dans ta vue si tu as le nom de l'action (dans un variable 'action' par ex.), tu peux faire :
Attention ici, tu ne verras le chemin complet jusqu'au répertoire qui contient le script. Mais pas le nom du script lui-même. En même temps tu sais que le nom du script lui-même, c'est : $this->action.'.phtml'.Code:
1
2... <?= $this->getScriptPath($this->action) ?>
Voilà, je suis quand toujours curieux de savoir pourquoi tu as besoin de ceci.
Il doit avoir une meilleure manière d'atteindre ton but.
Expose nous le problème de fond.
PS: Une bonne manière de savoir quelles sont les methodes dont tu disposes par classe, c'est de consulter : http://framework.zend.com/apidoc/core/
Merci pour ta réponse. Mais sans succès avec ces méthodes.
J'ai résolu mon problème avec ceci :
Merci pour le lien apidoc! je ne le connaissais pas!Code:$vue = basename($_SERVER['REQUEST_URI']);
La suite du post, c'est ici :
http://www.developpez.net/forums/d65...on-chemin-fer/