ОБНОВЛЕНО 05/08/2011 *
Я новичок в magento и пытаюсь создать наблюдателя, который будет срабатывать при оплате заказа. Пока наблюдатель просто отправляет электронное письмо, однако я буду расширять его в будущем, однако сначала мне нужно, чтобы код работал.
Я использую Magento 1.5.1.0 и посмотрел cheatsheat хуков событий @ http://www.nicksays.co.uk/magento_events_cheat_sheet/ Я вижу, что событие, к которому я хочу подключиться, это
'sales_order_payment_pay'
отправляется с
'app/code/local/Mage/Sales/Model/Order/Payment.php'.
поскольку я перезаписал файл в основной папке
После прочтения многочисленных статей я понимаю, что мне нужно создать 3 файла, которые выглядят следующим образом
app / etc / modules / PackageName_ModuleName.xml -> содержит файл xml, в котором указано, где находится модуль
app / code / local / PackageName / ModuleName / etc / config.xml -> which
присоединяет наблюдателя к отправленному событию sales_order_payment_pay
app / code / local / PackageName / ModuleName / Model / Observer.php -> состоит из класса, который содержит метод, который вызывается config.xml при возникновении события sales_order_payment_pay.
Вот файлы, которые я создал, и каталог, в котором находятся файлы, код будет расширен, чтобы сделать больше, чем просто отправить электронное письмо, когда сработает 'sales_order_payment_pay', я просто отлаживаю в minuite.
Мой код выглядит следующим образом. При оплате заказов электронное письмо не поступает
приложение / и т.д. / модули / Juno_Sales.xml
<?xml version="1.0"?>
<config>
<modules>
<Juno_Finalise>
<active>true</active>
<codePool>local</codePool>
</Juno_Finalise>
</modules>
</config>
Приложение / код / местные / Juno / Продажи / и т.д. / config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Juno_Sales>
<version>0.1.0</version>
</Juno_Sales>
</modules>
<global>
<models>
<junofinalise>
<class>Juno_Sales_Model</class>
</junofinalise>
</models>
<events>
<sales_order_payment_pay>
<observers>
<juno_sales_order_observer>
<type>singleton</type>
<class>junofinalise/order_observer</class>
<method>finaliseJunoOrder</method>
</juno_sales_order_observer>
</observers>
</sales_order_payment_pay>
</events>
</global>
</config>
app / code / local / Juno / Sales / Model / Order / Observer.php
<?php
Mage::log(__FILE__);
class Juno_Finalise_Model_Order_Observer
{
public function finaliseJunoOrder($event)
{
mail('ian.cassidy1404@gmail.com','call_juno_api','now call juno api');
/*
Sale has now been processed and is paid for, function needs modifying to call juno api
*/
}
}
?>
Любая помощь будет высоко ценится.
Большое спасибо
Ян