Qual é o último evento despachado antes do conteúdo ser enviado ao navegador?

11

Preciso definir ou atualizar um cookie, mas quero garantir que todo (ou o máximo possível) do processamento da solicitação ocorra antes que meu código de geração de cookies seja executado. ou seja, se o usuário efetuar login, quero garantir que o processamento do login ocorra antes da execução do meu código ou se o usuário adicionar algo ao carrinho, quero saber que todo o processamento do carrinho é feito primeiro.

Existem eventos despachados imediatamente antes de uma resposta ser enviada ao navegador?

Jim OHalloran
fonte

Respostas:

11

O último evento despachado no Magento 1.x antes da renderização do conteúdo é

controller_front_send_response_after

Se não houver requisitos adicionais nos dados do observador que você precisaria, este deve ser perfeito para você.

Jernej Golja
fonte
3
Na verdade, "controller_front_send_response_before" se parece com o que eu preciso. Obrigado por me apontar na direção certa!
Jim OHalloran
8

Um truque útil, para encontrar eventos disparados durante uma solicitação / ação de página, é editar temporariamente app / Mage.php e gravar os eventos disparados em 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;
    }

para

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, em seguida, finalize o arquivo de log. Achei esse método extremamente útil e economizei muito tempo procurando esse evento indescritível.

Naturalmente, você deve removê-lo imediatamente, pois não deseja confirmar os arquivos principais alterados. Envolvo-o na verificação do desenvolvedor, apenas por precaução.

ProxiBlue
fonte
2
Você também pode ativar o Profiler, que fornece informações abrangentes sobre o que acontece no carregamento de uma página. Todos os eventos acionados são ecoados lá também.
26613 Rick Kuipers