コンテンツがブラウザに送信される前に派遣された最後のイベントは何ですか?
-
16-10-2019 - |
質問
Cookieを設定または更新する必要がありますが、Cookie生成コードが実行される前に、要求処理のすべて(または可能な限り)が発生するようにしたいと思います。 IEユーザーがログインした場合、コードが実行される前にログイン処理が発生したことを確認するか、ユーザーがカートに何かを追加した場合、すべてのカート処理が最初に行われることを知りたいと思います。
応答がブラウザに送信される直前に発送されるイベントはありますか?
解決
コンテンツがレンダリングされる前に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;
}
そして、ログファイルをテールします。私はこの方法が非常に有用であることを発見し、そのとらえどころのないイベントのために多くの時間を節約しました。
変更されたコアファイルをコミットしたくないため、当然、すぐに削除する必要があります。念のため、開発者チェックにラップします。
所属していません magento.stackexchange