Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous !
Dans le cadre du développement d'une application, j'utilise le Zend Framework avec le modèle MVC. J'ai travaillé avec WAMP sous Windows XP et toute fonctionne bien dans cet environnement.
Mais lors de la migration des fichiers sur un serveur Linux (donc sensible à la casse), le rendu de la vue ne s'effectue que si le nom du fichier PHTML est tout en minuscules, alors qu'auparavant il était en notation "Camel Case" avec une minuscule au début.
Quelqu'un peut-il m'expliquer pourquoi ? Je précise que je n'utilise pas la fonction render() à la fin de mes fonctions dans les contrôleurs, le rendu étant fait automatiquement avec le fichier PHTML correspondant à la fonction (Exemple : Le fichier rechercherClient.phtml est automatiquement rendu à la fin de la fonction rechercherClientAction() qui se trouve dans l'un de mes contrôleurs).
Deuxième question liée à la précédente : comment fonctionne ce rendu automatique ? J'ai lu sur ce forum que certains préconisaient de demander explicitement à l'aide de la classe Zend_View le rendu du template en question.
Vos informations me seront d'un grand secours car actuellement, la seule solution "rapide" qui a été trouvée est de renommer les fichiers PHTML tout en minuscules ...
Merci,
J-Zender.
Hors ligne
en fait le framework garde une trace de cet appel à render
dans le post dispatch si le rendu à déjà eu lieu il ne fait rien sinon il lance le rendu (sauf si noRender a été demandé)
AJYT
Hors ligne
Merci sekaijin, il est donc possible de désactiver ce rendu automatique soit en positionnant l'option adéquate, soit en demandant le rendu explicite d'un template.
Mais par rapport à la casse ? Comment ce rendu automatique fonctionne-t-il ?
La solution idéale pour moi serait de positionner une option, dans l'index de l'application, à : "rendre le template qui a EXACTEMENT le même nom que la fonction du contrôleur", ainsi je pourrais garder la casse de mes noms de fichiers telle quelle.
Des infos ?
Merci,
J-Zender.
Hors ligne
Bonjour jzender,
C'est le viewRenderer qui assure ce rendu automatique. C'est un helper qui regarde le nom de ton controller, de ton action et l'extension par défaut et construit le chemin qui va bien pour ta vue.
Effectivement il met tout en minuscule pour construire le nom de la vue.
Par défaut il construit le nom de la vue avec la convention suivante :
protected $_viewScriptPathSpec = ':controller/:action.:suffix';
ensuite il remplace avec les éléments suivants (cf ViewRenderer.php dans Controller/Action/Helper/) :
$replacements = array( ':moduleDir' => $moduleDir, ':module' => str_replace($this->_delimiters, '-', strtolower($module)), ':controller' => str_replace($this->_delimiters, '-', strtolower(str_replace($this->_pathDelimiters, '/', $controller))), ':action' => str_replace($this->_delimiters, '-', strtolower($action)), ':suffix' => $suffix );
Donc effectivement les noms des modules, actions et controlleurs sont mis en minuscule (ne me demande pas pourquoi )
A+, Philippe
Hors ligne
rebonjour,
Pour ta 2e question si tu veux désactiver le rendu automatique, tu peux utiliser dans ton bootstrap :
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setNoRender(true);
Tu auras plus de billes à l'adresse
http://framework.zend.com/manual/en/zen … ockhelpers
et tu cherches ViewRenderer... ils expliquent tout le fonctionnement.
A+, Philippe
Hors ligne
Merci Philippe, je vais creuser tout ça !
Juste une question : cela signifie que, si j'utilise ce rendu automatique, pour être sur que mes pages soient accessibles, il faut que mes URLs soient en minuscules ?
Merci,
J-Zender.
Hors ligne
A priori non, il faut juste que tes noms de fichiers .phtml soient en minuscule, les URL peuvent avoir la casse que tu veux. Par contre, comme je n'utilise pas le viewRenderer, je te dis ça juste à partir du code... je n'ai pas essayé...
A+, Philippe
Hors ligne
Je viens d'essayer, effectivement la casse des URLs n'a aucune importance.
Merci beaucoup !
J-Zender.
Hors ligne
J'ai écrit un article sur le ViewRenderer, ici
Hors ligne