Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je suis une fois de plus confronter à un problème assez bizarre. Dans une de mes vues, je fais un appel ajax vers une action pour que celle ci me retourne des données complémentaires. Dans mon controller, je fais quelque chose du style :
[lang=php] public function monactionAction() { $view = new ViewModel(); $view->setTerminal(true); // mon traitement return $this->response; }
Tout fonctionne sans problème en localhost (wamp) mais quand j'appelle cette action sur mon serveur distant, je n'ai aucune données et quand je vais directement sur l'URL appelée, j'ai une page blanche...
Par ailleurs, si je réactive la vue dans l'action ($view->setTerminal(false)), je reçois bien les données sur le serveur mais avec le layout... ce que je ne souhaite pas !
Ca fait plusieurs jours que j'essaye de comprendre d'où vient cette bizarrerie sans résultat.
Une idée ?
Merci d'avance,
Romain
Dernière modification par RomainG (27-07-2016 11:37:56)
Hors ligne
Finalement, j'ai résolu mon problème un peu par hasard...
J'ai tout simplement activé le 'display_errors' et le 'error_reporting' dans mon fichier index.php et les requêtes en AJAX affichent bien les données.
Je reste quand même septique quant à cette solution loin d'être idéale...
Hors ligne
Bonjour,
En fait ton problème je pense est que tu traites un objet ViewModel auquel tu désactive le layout principal, mais que tu lui retourne un objet de type Response.
J'aurais été toi, j'aurais retourné un objet JsonModel que j'aurais traité dans mon callback Ajax. Ce que je fais dans toutes mes actions ajax en fait.
[lang=php] public function monactionAction() { $request = $this->getRequest(); if ($request->isXmlHttpRequest()) { // traitement $html = $this->renderer()->render('somePartial', array('var1' => $var, 'data' => $data)) return new JsonModel(array("unBlocHtml" => $html)); } else { return $this->notFoundAction(); } }
Voici une action simplifié qui me retourne directement un partial déjà rendu par le renderer, mon callback ajax affiche juste ce partial a la vue etc...
Hors ligne