Tôi biết rằng Magento có một hệ thống giống như cái móc gọi là sự kiện. Có ai có một danh sách đầy đủ hoặc một tập lệnh có thể được sử dụng để xác định những sự kiện nào có thể được gọi không?
Tôi biết rằng Magento có một hệ thống giống như cái móc gọi là sự kiện. Có ai có một danh sách đầy đủ hoặc một tập lệnh có thể được sử dụng để xác định những sự kiện nào có thể được gọi không?
Câu trả lời:
Không có danh sách tất cả các sự kiện magento, bởi vì hầu hết các sự kiện được đặt tên động.
Nếu bạn hỏi tôi, biết những sự kiện quan trọng này (và hậu quả) là điểm khởi đầu tốt (bên cạnh danh sách từ nick):
Mọi đối tượng được mở rộng từ Mage_Core_Model_Abauge gửi rất nhiều sự kiện xung quanh việc tải, lưu và xóa:
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
Ví dụ để thêm kiểm tra, sau khi đối tượng được tải
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
để thêm dữ liệu bổ sung vào đối tượng trước khi nó được lưu
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
Để lưu các mô hình khác sau khi "cha mẹ" được lưu
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
làm sạch, trước khi mô hình bị xóa
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
làm sạch, trước khi mô hình bị xóa - hoặc có thể sau đó? Bạn đang ở đây vẫn còn trong giao dịch!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
Nếu bạn muốn chắc chắn thực thể đã bị xóa
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Các bộ sưu tập được mở rộng từ Mage_Core_Model_Resource_Db_Collection_Abauge cũng có hai sự kiện chung:
Ví dụ: để thay đổi SQL để tải bộ sưu tập:
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
Ví dụ: để thêm dữ liệu bổ sung cho các đối tượng:
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
sự kiện mô hình, các sự kiện yêu cầu được nhắm mục tiêu, các sự kiện khối chung đôi khi hữu ích và tầm quan trọng của việc đăng nhập để tìm các sự kiện
app/code/core/Mage/Core/Model/App.php
và mage::log($eventName,null,'events.txt',true);
để các dispatchEvent
phương pháp. Tải trang tôi đang cố gắng quan sát. Rõ ràng là không để nguyên trạng này và hoàn nguyên sau khi var / log / event.txt của bạn được tạo. Bẩn, vâng. Nhanh lên :)
Làm điều đẫm máu grep 'Mage::dispatchEvent' app/ -rsn
Điều này sẽ cung cấp cho bạn một danh sách các sự kiện cụ thể cho cài đặt của bạn vì danh sách các sự kiện có thể thay đổi tùy thuộc vào phiên bản Magento, các tùy chỉnh và tiện ích mở rộng được cài đặt.
sales_order_place_after
sẽ xảy ra, nhưng có vẻ như lời kêu gọi bắn nó được nhận xét Checkout/Type/Onepage.php
.
Tôi sử dụng điều này như một bảng cheat tốt đẹp http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . Nó có tất cả các sự kiện có thể được gọi trong 1.7.
Tôi biết rằng câu hỏi này đã được trả lời Tôi chỉ cần thêm cách của tôi ở đây:
public static function dispatchEvent
(ln: ~ 446) khi bắt đầu tôi thêm
//Mage::log($name, null, 'events.log', true);
Sau đó, bạn mở var / log / event.log (~ 40kb) và chỉ xem toàn bộ rất nhiều sự kiện trên trang đó! :)
Câu trả lời đã được chấp nhận nhưng Ill vẫn gửi câu trả lời của tôi cho tương lai:
Nếu bạn muốn xem danh sách các sự kiện mà Magento có, bạn có 3 tùy chọn:
1) Google cho nó, có rất nhiều người đã biên soạn một danh sách các sự kiện Magento
2) Tạo một mô-đun móc vào controller_action_predispatch
sự kiện là sự kiện được gọi trước khi bất kỳ sự kiện nào khác được gọi. Trong mô-đun này, bạn có thể đăng nhập một số sự kiện được gửi đi:
Thêm phần sau vào 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>
Và bên trong yourmodule / Model / Observer:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
Ở trên sẽ ghi lại mọi sự kiện được gửi ...
3) Nếu bạn có quyền truy cập SSH, bạn có thể chạy lệnh sau để có cái nhìn tổng quan về tất cả các sự kiện (và các tệp của chúng được gửi đi):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, đáng chú ý controller_front_init_before
. 2) Cách tiếp cận này đơn giản sẽ không ghi lại mọi sự kiện được gửi đi, đây là phần lỗi chính tả hay chưa hoàn chỉnh?
Tôi đang sử dụng Thanh công cụ dành cho nhà phát triển Magento có tính năng hiển thị các sự kiện có thể quan sát được trên trang đã tải.
Tại đây, bạn có thể xem hầu hết các sự kiện hiện có: http : //www.magentoc Commerce.com/wiki/5_-_modules_and_development/reference/magento_events
Tôi đã thực hiện một grep trên mô-đun Mage lõi của Magento và tuân thủ một danh sách,
Danh sách đầy đủ các sự kiện Magento
PS Như đã chỉ ra, có thể chứa các sự kiện nằm trong các chức năng không dùng được của Magento, do đó, hãy kiểm tra tệp và tham chiếu dòng trước khi thực hiện.
Mở để góp ý!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
Lệnh grep được liệt kê trước đó sẽ hiển thị các bản sao (rất nhiều) và nó không bao gồm danh sách các tiền tố sự kiện sẽ được yêu cầu để hiểu các tên sự kiện được tạo động. Các lệnh này hiển thị cả hai danh sách chỉ có các giá trị duy nhất. Bạn có thể thêm cờ -n như câu trả lời grep khác và lấy số dòng tôi giả sử. Nhưng câu hỏi không hỏi họ ở đâu trong mã. ~ _ ~
Có một bảng cheat ở đây cũng http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http: //www.magentoc Commerce.com/wiki/5_-_modules_and_development/reference/magento_events
Ở đây bạn có thể tìm thấy danh sách đầy đủ các sự kiện quan sát viên.
Tham khảo những tờ cheat
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/chcoateet/1.9/
Nó sẽ hữu ích cho bạn.
Bạn có thể tìm thấy tất cả danh sách các sự kiện phụ trợ + lối vào trên một liên kết
http: //www.magentoc Commerce.com/wiki/5_-_modules_and_development/reference/magento_events
Nếu ai đó cần một danh sách cập nhật, tôi đang cố gắng cập nhật danh sách này:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Bạn có thể tìm thấy tất cả các sự kiện magento-1x bằng cách theo url. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference