当订单状态更改为已完成时,我想创建一个事件来导出库存。
我创建了覆盖Mage_Sales_Model_Order的模块并尝试生成一个事件
(sales_order_status_change)。
当我从 magento 管理面板查看和订购并更改订单状态以完成时,它的工作原理是在我的扩展类中打印一些东西,它显示,它很好。在这里我生成事件。(问题可能在这里,可能是事件未生成)
我创建了另一个模块来观察这个事件。但我无法进入我的观察者课程。我无法打印任何内容并退出,这意味着代码无法运行。
但是在同一个观察者类中,如果更改配置并观察其他一些事件(来自 Magento 内置事件)它可以工作。就像我测试了 catalog_controller_product_view
这是我的事件生成器模块。
应用程序/etc/modules/Gol_Eventgenerator.xml
<?xml version="1.0"?>
<config>
<modules>
<Gol_Eventgenerator>
<active>true</active>
<codePool>local</codePool>
</Gol_Eventgenerator>
</modules>
</config>
app\code\local\Gol\Eventgenerator\etc\config.xml
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Gol_Eventgenerator>
<version>0.1.0</version>
</Gol_Eventgenerator>
</modules>
<global>
<models>
<sales>
<rewrite>
<order>Gol_Eventgenerator_Model_Order</order>
</rewrite>
</sales>
</models>
</global>
</config>
app\code\local\Gol\Eventgenerator\Model\Order.php
<?php
class Gol_Eventgenerator_Model_Order extends Mage_Sales_Model_Order
{
public function setState($state, $status = false, $comment = '', $isCustomerNotified = null)
{
//if I print something here and exit, it does will.
Mage::dispatchEvent('sales_order_status_change', array('order' => $this, 'state' => $state, 'status' => $status, 'comment' => $comment, 'isCustomerNotified' => $isCustomerNotified));
return parent::setState($state, $status, $comment, $isCustomerNotified);
}
}
以下是观察者模块的详细信息
应用程序/etc/modules/Gol_Inventory.xml
<?xml version="1.0"?>
<config>
<modules>
<Gol_Inventory>
<active>true</active>
<codePool>local</codePool>
</Gol_Inventory>
</modules>
</config>
app\code\local\Gol\Inventory\etc\config.xml
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<Gol_Inventory>
<version>0.1.0</version>
</Gol_Inventory>
</modules>
<global>
<events>
<sales_order_status_change>
<observers>
<Gol_Inventory_observer>
<type>singleton</type>
<class>Gol_Inventory_Model_Observer</class>
<method>exportEnventory</method>
</Gol_Inventory_observer>
</observers>
</sales_order_status_change>
</events>
</global>
</config>
app\code\local\Gol\Inventory\Model\Observer.php
<?php
class Gol_Inventory_Model_Observer
{
public function exportEnventory($observer)
{
echo "Inside exportEvnentory method";
exit;
//$order = $observer->getEvent()->getOrder();
//$state = $observer->getEvent()->getState();
//$status = $observer->getEvent()->getStatus();
}
}
为前端和管理员生成事件的方式有什么区别???除了
,在配置文件中。
如果我没有遵循一些非常常见的事情,请提前道歉。新的magento。
我试图跟随。