Пользовательские события в Magento - PullRequest
19 голосов
/ 17 декабря 2009

Как добавить пользовательское событие в Magento, например "done_some_thing"?

Я кодирую корзину для покупок, которая дает определенную скидку в% для клиентов, которые переходят по определенной ссылке и хотят показать то же самое и на странице корзины, и на странице оплаты

1 Ответ

32 голосов
/ 17 декабря 2009

Для отправки события используйте функцию Mage::dispatchEvent (%magento%/app/Mage.php around line 425). Звонки выглядят так:

$data = array( 'somedata' => 'foo', 'layout' => $this->getLayout());
Mage::dispatchEvent('my_event_name', $data);

Чтобы наблюдать за событием, укажите наблюдателя в файле config.xml вашего расширения.

<config>
    <global>
        <events>
            <my_event_name>
                <observers>
                    <myextension>
                        <type>singleton</type>
                        <class>myextension/observer</class>
                        <method>someMethodName</method>
                    </myextension>
                </observers>
            </my_event_name>
        </events>
    </global>
</config>

Создайте соответствующий класс и метод (Observer.php), и вы готовы идти:

class Myextension_Model_Observer {
    public function someMethodName($event) {
        $layout = $event->getLayout();
        $someData = $event->getSomedata();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...