Meilleure façon de sortie de données ajax à partir d'un Magento Extension Admin
Je suis en train d'écrire une administration Magento extension a quelques rappels ajax en elle. Jusqu'à maintenant, j'ai été en écho à l'json, je suis de retour par le biais de l'appel ajax avec un simple écho de la déclaration dans le contrôleur. Il "fonctionne" mais je reçois un tas d'erreurs de ce type dans mon fichier de log:
2010-12-14T15:37:05+00:00 DEBUG (7): les en-TÊTES DÉJÀ ENVOYÉ le:
[0] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Contrôleur/Réponse/Http.php:44 [1] /home/simplifiedsafety/www/boutique/lib/Zend/Contrôleur/Réponse/Abstract.php:727 [2] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Contrôleur/Réponse/Http.php:75 [3] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Contrôleur/Varien/Avant.php:188 [4] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Modèle/App.php:304 [5] /home/simplifiedsafety/www/store/app/Mage.php:599 [6] /home/simplifiedsafety/www/boutique/index.php:104
Je pense que pour éviter cela, j'ai besoin de le pousser à travers une sorte de bloc. Quelqu'un peut-il me donner un peu d'indications à ce sujet?
Vous devez vous connecter pour publier un commentaire.
Magento utilise un objet de réponse pour envoyer la sortie de retour vers le navigateur. Même lorsque vous appelez
renderLayout
à partir d'un contrôleur, Magento est juste la construction de la chaîne de sortie dans la mémoire avant de le reproduire. La raison pour laquelle vous obtenez cette erreur est-il du système de code après que le contrôleur de l'expédition est d'essayer de définir des en-têtes, mais votre inattendu de sortie du régulateur empêche les en-têtes de.La solution la plus simple est de jeter un
directement après votre sortie du contrôleur. Cela interrompt l'exécution, votre réponse ajax est envoyée, le monde est content. Réjouissez-vous.
Alternativement, si vous êtes à la recherche pour que toujours insaisissable "à droite", sur la base d'exemples dans la base, il semble que vous pouvez appeler les opérations suivantes à partir de votre contrôleur pour récupérer l'objet de réponse, et de définir ensuite son corps directement.
Si vous le faites ci-dessus, vous êtes en contournant le Magento système de mise en page et le paramètre de sortie directement, mais en gardant la responsabilité de l'envoi de la sortie avec la réponse de l'objet.
Vous pouvez définir vos propres valeurs pour les en-têtes (JSON, XML, etc), que vous pouvez faire avec quelque chose comme ce qui suit (à nouveau, à partir d'un contrôleur de l'action)
Bonne chance!