마 젠토에는 이벤트라는 후크 형 시스템이 있다는 것을 알고 있습니다. 누구든지 호출 할 수있는 이벤트를 결정하는 데 사용할 수있는 전체 목록 또는 스크립트가 있습니까?
마 젠토에는 이벤트라는 후크 형 시스템이 있다는 것을 알고 있습니다. 누구든지 호출 할 수있는 이벤트를 결정하는 데 사용할 수있는 전체 목록 또는 스크립트가 있습니까?
답변:
대부분의 이벤트는 동적으로 이름이 지정되므로 모든 마 젠토 이벤트 목록이 없습니다.
당신이 저에게 묻는다면,이 주요 사건 (및 결과)을 아는 것이 좋은 출발점입니다 (닉의 목록 제외).
Mage_Core_Model_Abstract에서 확장 된 모든 객체는로드, 저장 및 삭제와 관련된 많은 이벤트를 전달합니다.
app/code/core/Mage/Core/Model/Abstract.php:255
Mage::dispatchEvent($this->_eventPrefix.'_load_before', $params);
// e.g. sales_order_load_before, checkout_cart_load_before
예를 들어, 객체가로드 된 후 검사를 추가하려면
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
객체를 저장하기 전에 추가 데이터를 추가
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
"부모"가 저장된 후 다른 모델을 저장하려면
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
모델을 삭제하기 전에 정리
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
모델을 삭제하기 전이나 나중에 정리 하시겠습니까? 아직 거래 중입니다!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
엔터티가 삭제되었는지 확인하려면
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Mage_Core_Model_Resource_Db_Collection_Abstract에서 확장 된 콜렉션에는 두 가지 일반 이벤트도 있습니다.
예를 들어, 콜렉션을로드하도록 SQL을 변경하려면 다음을 수행하십시오.
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:588
Mage::dispatchEvent($this->_eventPrefix.'_load_before', array(
$this->_eventObject => $this
));
// e.g. sales_order_status_history_collection_load_before
예를 들어, 객체에 추가 데이터를 추가하려면 다음을 수행하십시오.
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:637
Mage::dispatchEvent($this->_eventPrefix.'_load_after', array(
$this->_eventObject => $this
));
// e.g. sales_order_shipment_collection_load_after
_eventPrefix
모델 이벤트는 대상 요청 이벤트는 때때로 유용한 일반적인 블록 행사 및 이벤트를 찾기 위해 기록의 중요성
app/code/core/Mage/Core/Model/App.php
과 mage::log($eventName,null,'events.txt',true);
받는 dispatchEvent
방법. 관찰하려는 페이지를로드하십시오. var / logs / events.txt를 만든 후에는 그대로두고 되 돌리지 마십시오. 더럽습니다. 빨리요 :)
블러디 수행 grep 'Mage::dispatchEvent' app/ -rsn
이벤트 목록은 Magento 버전, 사용자 정의 및 설치된 확장 프로그램에 따라 다를 수 있으므로 설치와 관련된 이벤트 목록을 제공합니다.
sales_order_place_after
것입니다 Checkout/Type/Onepage.php
.
나는 이것을 좋은 치트 시트 http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/로 사용 합니다. 1.7에서 호출 할 수있는 모든 이벤트가 있습니다.
나는이 질문에 대한 답을 알고 있다는 것을 알고 있습니다.
public static function dispatchEvent
처음 에 (ln : ~ 446)
//Mage::log($name, null, 'events.log', true);
그런 다음 var / log / events.log (~ 40kb)를 열고 해당 페이지에서만 전체 이벤트를 볼 수 있습니다! :)
답변이 이미 접수되었지만 향후 답변을 게시하겠습니다.
Magento에있는 이벤트 목록을 보려면 3 가지 옵션이 있습니다.
1) 구글은 Magento 이벤트 목록을 작성한 많은 사람들이 있습니다.
2)controller_action_predispatch
다른 이벤트가 호출되기 전에 호출되는 이벤트 인 이벤트 를 연결하는 모듈을 작성하십시오 . 이 모듈 내에서 전달 된 일부 이벤트를 기록 할 수 있습니다.
config.xml에 다음을 추가하십시오.
<events>
<controller_action_postdispatch>
<observers>
<controller_action_after>
<class>yourmodule/observer</class>
<method>hookToControllerActionPostDispatch</method>
</controller_action_after>
</observers>
</controller_action_postdispatch>
</events>
그리고 모듈 / 모델 / 관찰자 내부 :
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
위는 발송 된 모든 이벤트를 기록합니다 ...
3) SSH 액세스 권한이 있으면 다음 명령을 실행하여 모든 이벤트 (및 이벤트가 전달 된 파일)에 대한 개요를 얻을 수 있습니다.
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
특히 몇 가지 사건이 발생했다 controller_front_init_before
. 2)이 접근 방식은 단순히 발송 된 모든 이벤트를 기록 하지는 않습니다 . 오타 또는 불완전한 섹션입니까?
로드 된 페이지에서 볼 수있는 이벤트를 표시하는 멋진 기능이있는 Magento Developer Toolbar를 사용하고 있습니다.
여기에서 기존 이벤트의 대부분을 볼 수 있습니다. http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Magento의 핵심 Mage 모듈에서 grep을 수행하고 목록을 준수했습니다.
PS 지적한 바와 같이, Magento의 더 이상 사용되지 않는 함수 내에있는 이벤트를 포함 할 수 있으므로 구현 전에 파일 및 라인 참조를 확인하십시오.
제안을 위해여십시오!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
위에 나열된 grep 명령은 복제본을 많이 렌더링하며 동적으로 생성 된 이벤트 이름을 이해하는 데 필요한 이벤트 접두사 목록을 다루지 않습니다. 이 명령은 두 목록을 고유 한 값으로 만 렌더링합니다. 다른 grep 답변과 같이 -n 플래그를 추가하고 내가 생각하는 줄 번호를 얻을 수 있습니다. 그러나 질문은 코드에서 그들이 어디에 있는지 묻지 않았습니다. ~ _ ~
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
여기서 관찰자 이벤트의 전체 목록을 찾을 수 있습니다.
이 치트 시트를 참조하십시오
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
도움이 될 것입니다.
단일 링크에서 모든 백엔드 + 프런트 엔드 이벤트 목록을 찾을 수 있습니다
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
누군가 업데이트 된 목록이 필요한 경우이 목록을 최신 상태로 유지하려고합니다.
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
url을 따라 모든 magento-1x 이벤트를 찾을 수 있습니다. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference