Apa acara terakhir yang dikirim sebelum konten dikirim ke browser?

11

Saya perlu mengatur atau memperbarui cookie, tetapi saya ingin memastikan bahwa semua (atau sebanyak mungkin) dari pemrosesan permintaan terjadi sebelum kode pembuatan cookie saya berjalan. yaitu jika pengguna login, saya ingin memastikan bahwa proses masuk telah terjadi sebelum kode saya berjalan, atau jika pengguna menambahkan sesuatu ke keranjang mereka, saya ingin tahu bahwa semua pemrosesan keranjang dilakukan terlebih dahulu.

Apakah ada peristiwa yang dikirim segera sebelum respons dikirim ke browser?

Jim OHalloran
sumber

Jawaban:

11

Acara terakhir yang dikirim di Magento 1.x sebelum konten diberikan

controller_front_send_response_after

Jika tidak ada persyaratan tambahan dalam data pengamat yang Anda perlukan, yang ini harusnya cocok untuk Anda.

Jernej Golja
sumber
3
Sebenarnya, "controller_front_send_response_before" seperti yang saya butuhkan. Terima kasih telah mengarahkan saya ke arah yang benar!
Jim OHalloran
8

Trik yang berguna, untuk menemukan acara yang dipecat saat permintaan / tindakan halaman, adalah dengan mengedit aplikasi / Mage.php untuk sementara waktu dan menuliskan acara yang dipecat ke 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;
    }

untuk

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

dan kemudian tail file log. Saya telah menemukan metode ini sangat berguna, dan menghemat banyak waktu berburu untuk acara sulit untuk digunakan.

Tentu Anda harus segera menghapusnya, karena Anda tidak ingin melakukan perubahan file inti. Saya membungkusnya dengan cek pengembang, untuk berjaga-jaga.

ProxiBlue
sumber
2
Anda juga dapat mengaktifkan Profiler, ini memberi Anda informasi luas tentang apa yang terjadi dalam pemuatan halaman. Semua peristiwa yang dipicu juga bergema di sana.
Rick Kuipers