Vérifiez si la requête a été envoyée par Ajax ou non
Je suis substitution d'un magento contrôleur, avant le traitement, est-il un moyen de savoir si la demande a été envoyée par Ajax ou pas?
Grâce
source d'informationauteur ilyes kooli
Vous devez vous connecter pour publier un commentaire.
Magento utilise la classe
Zend_Controller_Request_Http
pour ses demandes.Vous pouvez utiliser
pour détecter les requêtes Ajax de cette façon.
Au moins
envoyer le
HTTP_X_REQUESTED_WITH
en-tête, selon le ZF docs.Note si, "les requêtes Ajax" signifie toutes les demandes envoyées à l'aide de XmlHttpRequest (et pas en utilisant des techniques comme caché
<iframe>
s, ou Flash uploaders, par exemple) pour moi.Puisque c'est subjectif et votre perception peut varier: Magento lui-même semble définir "Ajax" dans certains plus étendus de cette façon que je le fais. Jetez un oeil à
Mage_Core_Controller_Request_Http::isAjax()
:En fonction de votre perception personnelle de "Ajax", ce qui peut (ou non) de mieux s'adapter à vos besoins.
Si je ne me trompe pas, magento est écrite à l'aide de Zend Framework, à cet effet, par l'utilisation de l'objet de Demande que vous pouvez faire
http://framework.zend.com/manual/en/zend.controller.request.html#zend.controller.request.http.ajax
Bonne chance! 🙂
Magento utilise en interne un mélange des deux.
Zend Framework isXmlHttpRequest() vérifie en-tête.
Dans certains cas, magento utilise isXmlHttpRequest() comme dans Mage_ImportExport_Adminhtml_Exportcontroller::getFilterAction()
Dans d'autres cas, il vérifie le paramètre get comme dans Mage_Catalog_Product_CompareController::removeAction()
Demande Mage_Core_Controller_Request_Http::isAjax() vérifie pour les deux
Je suggère d'utiliser un objet de Requête isAjax qu'il vérifie pour les Deux.
Suffit d'utiliser pur PHP et jamais de soins:
Vous pouvez utiliser ceci: