如何在Magento订单流程结束时执行脚本?

时间:2013-06-03 13:09:55

标签: magento zend-framework mage

我正在Magento atm建立我自己的结账方法。我创建了一个PHP脚本,其功能是在将订单详细信息填写到我的自定义付款页面后重定向用户。脚本本身正在工作,但它在订单处理的早期被解雇。启用后,当用户点击“转到结帐按钮”而不填写订单详细信息时,会立即重定向用户。因此我的PHP脚本被Magento看到,并且该方法立即被触发(我正在使用_contruct方法)。

所以现在是以下程序: 用户选择产品 - >用户去购物篮 - >用户点击结帐 - >用户被重定向。

我希望它如下: 用户选择产品 - >用户去购物篮 - >用户点击结帐 - >用户填写订单详细信息并选择我的送货方式(如果首选) - >用户点击“完成订单并付款” - >用户现在被重定向,因为脚本已经执行。

我的PHP脚本使用以下语法:

 public function __construct()
{ my PHP code here with the redirect };

当用户选择了送货地址,结算adres并选择了我的付款方式时,如何让PHP脚本执行??

1 个答案:

答案 0 :(得分:2)

您可以使用magento的事件/观察者方法在下订单后执行某些操作。

您可以使用此活动sales_order_place_after

只需创建一个模块来监听magento observer / event。

在/ app / code / local / {namespace} / {yourmodule} /etc/config.xml中:

<config>
        ...
        <frontend>
            ...
            <events>
                <sales_order_place_after>
                    <observers>
                        <unique_event_name>
                            <class>{{modulename}}/observer</class>
                            <method>your function name</method>
                        </unique_event_name>
                    </observers>
                </sales_order_place_after>
            </events>
            ...
        </frontend>
        ...
    </config>

然后在/ app / code / local / {namespace} / {yourmodule} /Model/Observer.php

创建一个Observer类
    class <namespace>_<modulename>_Model_Observer
   {
      public function your function name(Varien_Event_Observer $obs)
      {
          whatever your logic put here
      }

   }