Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
je souhaite depuis un controlleur récupérer le render courant dans une variable, est ce possible ?
La raison est simple, j'utilise Ajax pour faire l'appel à l'action. Comme retour je souhaite passer un élément json qui contient un array avec un élément html qui correspond au render courant. Il y a bien entendu d'autres variables.
voila en gros mon code de l'action:
echo Zend_Json::encode(array( "isValid" => $isValid, "error" => $error, "html" => "" ));
Dernière modification par bucheron (09-07-2008 14:13:12)
Hors ligne
quelqu'un aurait il une idée ? car ça me bloque pas mal ce problème.
Dernière modification par bucheron (08-07-2008 22:31:35)
Hors ligne
hello,
C'est sûr ça n'a pas l'air de fonctionner directement dans le contrôleur en passant par "$this->render(script)".
En partant de cette hypothèse (voire conclusion si personne ne connait la réponse), il suffit juste de réinstancier une nouvelle view dans l'action.
En gros :
$view = new Zend_View(); $view->setScriptPath(PATH_SCRIPT); $result = $view->render(SCRIPT_NAME);
De cette façon, tu auras le resultat dans "$result" en remplaçant bien entendu les variables PATH_SCRIPT et SCRIPT_NAME par tes informations.
Je trouve quand même bizarre que le $this->render() dans Zend_Controller_Action renvoie void (voir http://framework.zend.com/apidoc/core/) alors que celui de Zend_View renvoie une chaîne de caractères.
Bref.
[Edit: 09/07/07]
Si tu veux vraiment utiliser le $this->render() du Zend_Controller_Action tu peux te servir de ob_start(); pour mettre en tampon ce que tu veux vu qu'il fait l'affichage puis un ob_get_contents() pour récupérer le contenu.
C'est pas la meilleure méthode, je préfère l'option de la nouvelle Zend_View personnellement.
Dernière modification par thoas (09-07-2008 13:57:46)
Hors ligne
effectivement çà à l'air de marcher.
Par contre ne serait il pas possibeld e récupérer le PATH_SCRIPT depuis une fonction de render courant ?
Hors ligne
Tu peux oui, tu te positionnes dans le Zend_Controller_Action et tu fais un simple $this->view->getScriptPaths(); qui te rend un array.
Voir l'API -> http://framework.zend.com/apidoc/core/Z … rface.html
A savoir qu'il y a un $this->view->getScriptPath() apparemment (je le vois dans ZendStudio) mais non fonctionnel chez moi (function undefined).
Peut être qu'il le sera plus tard.
Hors ligne
chez moi il fonctionne, bizarre que chez toi non.
En ce qui me concerne j'utilise les layout, peut etre c'est à cause de ça.
En tout cas dans le tableau de retour j'ai:
0 => view script path vers le répertoire layout
1 => view script path basique.
En tout cas merci thoas pour ton aide ))
Hors ligne
Pages: 1