Jakie jest ostatnie wydarzenie wysłane przed przesłaniem treści do przeglądarki?

11

Muszę ustawić lub zaktualizować plik cookie, ale chcę się upewnić, że wszystkie (lub w jak największym stopniu) przetwarzanie żądania nastąpi przed uruchomieniem mojego kodu generowania plików cookie. tzn. jeśli użytkownik się zaloguje, chcę się upewnić, że przetwarzanie logowania nastąpiło przed uruchomieniem mojego kodu lub jeśli użytkownik doda coś do swojego koszyka, chcę wiedzieć, że wszystkie przetwarzanie koszyka odbywa się najpierw.

Czy są jakieś zdarzenia, które są wywoływane bezpośrednio przed wysłaniem odpowiedzi do przeglądarki?

Jim OHalloran
źródło

Odpowiedzi:

11

Ostatnie zdarzenie wysłane w Magento 1.x przed renderowaniem treści to

controller_front_send_response_after

Jeśli nie ma żadnych dodatkowych wymagań dotyczących danych obserwatora, których byś potrzebował, ten powinien być dla Ciebie idealny.

Jernej Golja
źródło
3
Właściwie „Controller_front_se__ndnd_response_before” wygląda tak, jak potrzebuję. Dzięki za wskazanie mi właściwego kierunku!
Jim OHalloran
8

Przydatną sztuczką, aby znaleźć zdarzenia uruchomione podczas żądania strony / akcji, jest tymczasowa edycja aplikacji / Mage.php i zapisanie zdarzeń uruchomionych w 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;
    }

do

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

a następnie ogonuj plik dziennika. Uznałem tę metodę za niezwykle przydatną i zaoszczędziłem dużo czasu na szukaniu tego nieuchwytnego zdarzenia.

Oczywiście powinieneś go natychmiast usunąć, ponieważ nie chcesz zatwierdzać zmienionych plików podstawowych. Na wszelki wypadek umieszczam to w czeku programisty.

ProxiBlue
źródło
2
Możesz także włączyć Profiler, który daje obszerne informacje o tym, co dzieje się podczas ładowania strony. Wszystkie wywołane zdarzenia również są tam odtwarzane.
Rick Kuipers