Какое последнее событие отправилось до отправки контента в браузер?
-
16-10-2019 - |
Вопрос
Мне нужно установить или обновить файл cookie, но я хочу убедиться, что все (или максимально возможное) обработку запроса произошли до запуска моего кода генерации cookie. То есть, если пользователь входит в систему, я хочу убедиться, что обработка входа в систему произошла до запуска моего кода, или если пользователь добавляет что -то в свою корзину, я хочу знать, что вся обработка корзины выполняется в первую очередь.
Есть ли какие -либо события, которые отправляются непосредственно перед тем, как ответ отправит в браузер?
Решение
Последнее событие, отправленное в Magento 1.x, до того, как содержится
controller_front_send_response_after
Если в данных наблюдателя нет дополнительных требований, которые вам понадобятся, этот должен быть идеальным для вас.
Другие советы
Удобный трюк, чтобы найти события, запускаемые во время запроса страницы/действия, - временно редактировать 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;
}
а затем заверните файл журнала. Я нашел этот метод чрезвычайно полезным и сэкономил много времени на охоту на это неуловимое событие для использования.
Естественно, вы должны немедленно удалить его, так как вы не хотите совершать измененные файлы основных. Я обертываю его в проверку разработчика, на всякий случай.