Wiem, że Magento ma system przypominający hak zwany zdarzeniami. Czy ktoś ma pełną listę lub skrypt, za pomocą którego można określić, które zdarzenia można wywołać?
event-observer
magento-1
zalety
źródło
źródło
Odpowiedzi:
Nie ma listy wszystkich zdarzeń magento, ponieważ większość zdarzeń ma nazwy dynamiczne.
Jeśli mnie zapytasz, znajomość tych kluczowych wydarzeń (i ich konsekwencji) jest dobrym punktem wyjścia (obok listy z nicka):
Każdy obiekt rozszerzony z Mage_Core_Model_Abstract wywołuje wiele zdarzeń dotyczących ładowania, zapisywania i usuwania:
Na przykład, aby dodać kontrole, po załadowaniu obiektu
aby dodać dodatkowe dane do obiektu przed jego zapisaniem
Aby zapisać inne modele po zapisaniu „rodzica”
wyczyść, zanim model zostanie usunięty
posprzątaj, zanim model zostanie usunięty - a może później? Jesteś tutaj nadal w transakcji!
Jeśli chcesz mieć pewność, że jednostka została usunięta
Kolekcje rozszerzone z Mage_Core_Model_Resource_Db_Collection_Abstract mają również dwa ogólne zdarzenia:
Na przykład: aby zmienić kod SQL i załadować kolekcję:
Na przykład: aby dodać dodatkowe dane do obiektów:
źródło
_eventPrefix
zdarzeń modelowych, zdarzeń żądania ukierunkowanego, czasami użytecznych ogólnych zdarzeń blokowych oraz znaczenie logowania w celu znalezienia zdarzeńapp/code/core/Mage/Core/Model/App.php
image::log($eventName,null,'events.txt',true);
dodispatchEvent
metody. Załaduj stronę, którą próbuję obserwować. Oczywiście nie zostawiaj tego tak, jak jest i przywróć po utworzeniu pliku var / logs / events.txt. Brudne, tak. Szybko tak. :)Do the bloody
grep 'Mage::dispatchEvent' app/ -rsn
Zapewni ci to listę wydarzeń specyficznych dla twojej instalacji, ponieważ lista wydarzeń może się różnić w zależności od wersji Magento, zainstalowanych dostosowań i rozszerzeń.źródło
sales_order_place_after
tak się stanie, ale wygląda na to, że wezwanie do strzału, z którego został skomentowany, zostało skomentowaneCheckout/Type/Onepage.php
.Używam tego jako ładnego ściągawki http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . Ma wszystkie zdarzenia, które można wywołać w 1.7.
źródło
Wiem, że odpowiedziano na to pytanie, dodam tutaj swoją drogę:
public static function dispatchEvent
(ln: ~ 446) na początku dodaję//Mage::log($name, null, 'events.log', true);
Następnie otwierasz var / log / events.log (~ 40kb) i widzisz wiele wydarzeń tylko na tej stronie! :)
źródło
Odpowiedź została już zaakceptowana, ale i tak opublikuję moją odpowiedź na przyszłość:
Jeśli chcesz zobaczyć listę wydarzeń, które Magento ma, masz 3 opcje:
1) Google, jest wiele osób, które opracowały listę wydarzeń Magento
2) Utwórz moduł, który przechwytuje
controller_action_predispatch
zdarzenie, które jest wywoływane przed wywołaniem jakiegokolwiek innego zdarzenia. Wewnątrz tego modułu możesz rejestrować niektóre zdarzenia, które są wywoływane:Dodaj następujące informacje na config.xml
A wewnątrz modułu / Modelu / Obserwatora:
Powyższe zapisuje każde wysłane zdarzenie ...
3) Jeśli masz dostęp do SSH, możesz uruchomić następujące polecenie, aby uzyskać przegląd wszystkich zdarzeń (i ich plików, w których są wysyłane):
źródło
controller_action_predispatch
Zwłaszcza kilka wcześniej odpalonych wydarzeńcontroller_front_init_before
. 2) Takie podejście po prostu nie rejestruje każdego wysłanego zdarzenia, czy jest to literówka czy niekompletna sekcja?Używam Magento Developer Toolbar, który ma fajną funkcję wyświetlania zdarzeń, które można zaobserwować na ładowanej stronie.
źródło
Tutaj możesz wyświetlić większość istniejących wydarzeń: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
źródło
Zrobiłem grep na głównym module Magento i przestrzegałem listy,
Wyczerpująca lista wydarzeń Magento
PS Jak wskazano, może zawierać zdarzenia, które są w przestarzałych funkcjach Magento, więc sprawdź implementację pliku i linii przed implementacją.
Otwarty na sugestie!
źródło
Poprzednio wymienione polecenie grep wyświetlałoby duplikaty (często) i nie obejmuje listy prefiksów zdarzeń, które byłyby wymagane do zrozumienia dynamicznie generowanych nazw zdarzeń. Te polecenia renderują obie listy z unikalnymi wartościami. Możesz dodać flagę -n jak inną odpowiedź grep i uzyskać numer linii, jak sądzę. Ale pytanie nie zadawało, gdzie są w kodzie. ~ _ ~
źródło
tutaj jest ściągawka tutaj http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
źródło
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Tutaj możesz znaleźć pełną listę wydarzeń obserwatora.
źródło
Zobacz te ściągawki
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
Pomoże ci to.
źródło
Możesz znaleźć całą listę zdarzeń backend + frontend na jednym linku
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
źródło
Jeśli ktoś potrzebuje zaktualizowanej listy, staram się ją aktualizować:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
źródło
Możesz znaleźć wszystkie wydarzenia magento-1x, podążając za adresem URL. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference
źródło