Quel est le dernier événement envoyé avant l'envoi du contenu au navigateur?


11

J'ai besoin de définir ou de mettre à jour un cookie, mais je veux m'assurer que tout (ou autant que possible) le traitement de la demande a lieu avant l'exécution de mon code de génération de cookie. c'est-à-dire que si l'utilisateur se connecte, je veux m'assurer que le traitement de connexion a eu lieu avant l'exécution de mon code, ou si l'utilisateur ajoute quelque chose à son panier, je veux savoir que tout le traitement du panier est effectué en premier.

Y a-t-il des événements qui sont envoyés immédiatement avant l'envoi d'une réponse au navigateur?

Réponses:


11

Le dernier événement distribué dans Magento 1.x avant le rendu du contenu est

controller_front_send_response_after

S'il n'y a pas d'exigences supplémentaires dans les données d'observateur dont vous auriez besoin, celle-ci devrait être parfaite pour vous.


3
En fait, "controller_front_send_response_before" ressemble à ce dont j'ai besoin. Merci de m'avoir pointé dans la bonne direction!
Jim OHalloran

8

Une astuce pratique pour trouver les événements déclenchés lors d'une demande / action de page consiste à modifier temporairement app / Mage.php et à écrire les événements déclenchés dans var / log / system.log

 public static function dispatchEvent($name, array $data = array())
    {
        Varien_Profiler::start('DISPATCH EVENT:'.$name);
        $result = self::app()->dispatchEvent($name, $data);
        Varien_Profiler::stop('DISPATCH EVENT:'.$name);
        return $result;
    }

à

public static function dispatchEvent($name, array $data = array())
    {
        if(mage::getIsDeveloperMode()) {
           mage::log($name);
        }
        Varien_Profiler::start('DISPATCH EVENT:'.$name);
        $result = self::app()->dispatchEvent($name, $data);
        Varien_Profiler::stop('DISPATCH EVENT:'.$name);
        return $result;
    }

puis réduisez le fichier journal. J'ai trouvé cette méthode extrêmement utile et j'ai économisé beaucoup de temps à chercher cet événement insaisissable à utiliser.

Naturellement, vous devez le supprimer immédiatement, car vous ne souhaitez pas valider les fichiers de base modifiés. Je l'enveloppe dans la vérification du développeur, juste au cas où.


2
Vous pouvez également activer le profileur, il vous donne des informations détaillées sur ce qui se passe lors du chargement d'une page. Tous les événements déclenchés y sont également répercutés.
Rick Kuipers
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.