Какое последнее событие отправляется перед отправкой контента в браузер?

11

Мне нужно установить или обновить cookie-файл, но я хочу убедиться, что вся (или насколько это возможно) обработка запроса происходит до запуска кода генерации cookie-файла. т. е. если пользователь входит в систему, я хочу убедиться, что обработка входа произошла до того, как мой код будет запущен, или если пользователь что-то добавит в свою корзину, я хочу знать, что вся обработка корзины выполняется в первую очередь.

Есть ли какие-либо события, которые отправляются непосредственно перед отправкой ответа в браузер?

Джим Охаллоран
источник

Ответы:

11

Последнее событие, отправленное в Magento 1.x перед отображением контента:

controller_front_send_response_after

Если в данных наблюдателя нет дополнительных требований, которые вам понадобятся, это должно быть идеально для вас.

Jernej Golja
источник
3
На самом деле, "controller_front_send_response_before" выглядит так, как мне нужно. Спасибо, что указал мне правильное направление!
Джим Охаллоран
8

Удобный трюк, чтобы найти события, запущенные во время запроса / действия страницы, состоит в том, чтобы временно отредактировать app / Mage.php и записать события, запущенные в 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;
    }

а затем хвост файл журнала. Я нашел этот метод чрезвычайно полезным и сэкономил много времени на поиск этого неуловимого события.

Естественно, вы должны немедленно удалить его, так как вы не хотите фиксировать измененные файлы ядра. Я включаю его в проверку разработчика, на всякий случай.

ProxiBlue
источник
2
Вы также можете включить Profiler, он дает вам обширную информацию о том, что происходит при загрузке страницы. Все вызванные события также отражены там.
Рик Кейперс