Qual è l'ultimo evento inviato prima che i contenuti vengano inviati al browser?


11

Devo impostare o aggiornare un cookie, ma voglio assicurarmi che tutta (o il più possibile) dell'elaborazione della richiesta avvenga prima dell'esecuzione del mio codice di generazione dei cookie. cioè se l'utente accede, voglio assicurarmi che l'elaborazione dell'accesso sia avvenuta prima dell'esecuzione del mio codice, o se l'utente aggiunge qualcosa al suo carrello voglio sapere che tutta l'elaborazione del carrello viene eseguita per prima.

Ci sono eventi che vengono inviati immediatamente prima che una risposta venga inviata al browser?

Risposte:


11

L'ultimo evento inviato in Magento 1.x prima del rendering del contenuto è

controller_front_send_response_after

Se non ci sono requisiti extra nei dati dell'osservatore di cui avresti bisogno, questo dovrebbe essere perfetto per te.


3
In realtà, "controller_front_send_response_before" sembra quello di cui ho bisogno. Grazie per avermi indicato nella giusta direzione!
Jim OHalloran,

8

Un trucco utile, per trovare eventi attivati ​​durante una richiesta / azione di una pagina, è modificare temporaneamente app / Mage.php e scrivere gli eventi lanciati su 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;
    }

per

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;
    }

e quindi coda il file di registro. Ho trovato questo metodo estremamente utile e ho risparmiato molto tempo a cercare quell'evento sfuggente da usare.

Naturalmente è necessario rimuoverlo immediatamente, poiché non si desidera eseguire il commit di file core modificati. Lo avvolgo nel controllo dello sviluppatore, per ogni evenienza.


2
Puoi anche abilitare il Profiler, che ti fornisce informazioni dettagliate su cosa succede nel caricamento di una pagina. Anche tutti gli eventi attivati ​​vengono ripetuti.
Rick Kuipers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.