콘텐츠가 브라우저로 전송되기 전에 마지막으로 전달되는 이벤트는 무엇입니까?


11

쿠키를 설정하거나 업데이트해야하지만 쿠키 생성 코드가 실행되기 전에 요청 처리의 모든 (또는 가능한 한)이 발생하는지 확인하고 싶습니다. 즉, 사용자가 로그인하면 코드가 실행되기 전에 로그인 처리가 발생했는지 확인하거나 사용자가 카트에 무언가를 추가하면 모든 카트 처리가 먼저 수행되고 있음을 알고 싶습니다.

응답이 브라우저로 전송되기 직전에 전달되는 이벤트가 있습니까?

답변:


11

컨텐츠가 렌더링되기 전에 Magento 1.x에서 전달 된 마지막 이벤트는

controller_front_send_response_after

관찰자 데이터에 필요한 추가 요구 사항이없는 경우이 요구 사항이 가장 적합합니다.


3
실제로 "controller_front_send_response_before"는 필요한 것 같습니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다!
Jim OHalloran

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

그런 다음 로그 파일을 미십시오. 나는이 방법이 매우 유용하다는 것을 알았고, 그 애매한 이벤트를 사용하기 위해 많은 시간을 절약했다.

변경된 코어 파일을 커밋하지 않으려면 당연히 즉시 제거해야합니다. 만약을 대비하여 개발자 확인에 넣습니다.


2
프로파일 러를 활성화 할 수도 있으며 페이지로드시 발생하는 상황에 대한 광범위한 정보를 제공합니다. 트리거 된 모든 이벤트도 여기에 에코됩니다.
Rick Kuipers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.