Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je rencontre un petit problème que je n'avais pas eu l'occasion de rencontrer sur les précédent projets auxquels j'ai participé avant mais qui est vraiment agaçant lorsqu'on utilise le Zend Framework pour générer du Xml ou retourner des objets encodé en JSon en vue de les exploiter grâce à des requêtes AJAX. Voila ce qui ce passe, prenons un exemple :
_ Je fais appel à mon action : "http://www.monsite.com/mon_module/mon_controller/getobject grâce à une requête AJAX.
_ Voila ce que contient ma méthode getobjectAction :
public function getobjectAction() { $this->_helper->layout->disableLayout(); $myObject = array(1 => 'hello', 2 => 'world', 3 => '!'); $this->view->myObject = $myObject; }
_ Voila ce que contient ma vue getobject.phtml :
ligne 1: <?= json_encode($this->myObject) ?>
_ C'est la que les soucis arrivent, au lieu retourner au navigateur:
[b]ligne 1: {"1":"hello","2":"world","3":"!"}
le Zend framework retourne :
ligne 1: ligne 2: {"1":"hello","2":"world","3":"!"}
ou encore :
ligne 1: ligne 2: {"1":"hello","2":"world","3":"!"} ligne 3:
Un caractère de retour à la ligne viens s'insérer tout seul, et ce sur toutes les pages générées par le Zend Framework.
J'ai comparé avec d'autre projets, sur d'autres pc, sur d'autres serveurs, d'autres vues, avec des actions sans vue ( utilisation d'echo ), c'est assez aléatoire mais on va dire que 50% des projets présentent ce caractère de retour à la ligne en début de page, voir aussi en fin de page...
Est ce que quelqu'un a déjà été confronté à ce problème et comment l'a-t-il réglé ? ( encodage, options sur le dispatcher, layout ?)
Merci d'avance pour vos réponses, explications et idées.
Cordialement,
@dinsx
Hors ligne
Après conseil d'un ami, le problème se situe dans Zend Studio 6.1.1 au niveau des templates de base associés à la création assisté de Zend Controller :
Il suffit donc de modifier ce template ou de penser à retirer ces caractères à la fin de votre nouveau Controller. J'espère que cela pourra vous aider si vous êtes confrontés à ce problème.
Cordialement,
@dinsx
Hors ligne
Il est encore beaucoup plus simple d'enlever le ?>
car ainsi même s'il y a altération du fichier il ne peut y avoir insertion de caractères parasites.
A+JYT
Hors ligne
sekaijin a écrit:
Il est encore beaucoup plus simple d'enlever le ?>
car ainsi même s'il y a altération du fichier il ne peut y avoir insertion de caractères parasites.
j'ajouterai que c'est même encouragé, et considéré comme une bonne pratique ZF que de ne pas utiliser de balise de fermeture (?>) dès lors qu'un script ne contient que du php (pas de html). Ceci permettant d'éviter ce genre de souci, et par extension, les soucis liés à l'envoi prématuré des headers http (à cause des lignes vides), ce qui pose régulièrement des problèmes avec les sessions.
Dernière modification par gauthier (24-02-2009 10:35:02)
Hors ligne
je dirais même qu'un <?php en fin de fichier phtml ne fait pas de mal
A+JYT
Hors ligne
sekaijin a écrit:
je dirais même qu'un <?php en fin de fichier phtml ne fait pas de mal
là je ne vois pas bien l'intérêt en revanche... juste pour éviter d'autres lignes vides ? Si c'est bien à ça que tu penses, ça me semble moins essentiel, puisque HTML ne les interprète pas, et que les scripts phtml sont pour l'essentiel censés produire du html...
mais pourquoi pas
Hors ligne