-
16-10-2019 - |
题
我一直在使用我的自定义代码中的onepagecontroller.php(/app/code/code/mage/nockout/Controllers)中覆盖函数saveorderAction。
我已经成功地实施了逻辑。我相信在功能开始时,由于订单尚未完成,因此没有订单ID。相反,我可以访问“报价ID”。
我现在需要做的是找出订单ID为订单生成的位置。我的第一个问题是,哪个文件/函数最适合创建订单ID的何时?
我的第二个问题是,有没有办法将报价ID与生成的订单ID联系起来?
从本质上讲,我的目标是获取当前订购的项目的订单ID,以便我可以进行进一步的自定义处理。
我的观察者代码是通过此路径:/local/james/aftercheckout
config.xml-/local/james/aftercheckout/etc
observer.php-/local/james/aftercheckout/型号
config.xml的内容:
<?xml version="1.0"?>
<config>
<modules>
<James_Aftercheckout>
<version>0.1.0</version>
</James_Aftercheckout>
</modules>
<global>
<events>
<sales_model_service_quote_submit_before>
<observers>
<james_aftercheckout_observer>
<type>singleton</type>
<class>James_Aftercheckout_Model_Observer</class>
<method>test</method>
</james_aftercheckout_observer>
</observers>
</sales_model_service_quote_submit_before>
</events>
</global>
observer.php的代码:
class James_Aftercheckout_Model_Observer
{
public function test($observer)
{
$quote = $observer->getEvent()->getQuote();
$incrementId = $quote->getReservedOrderId();
$to = "myemail@gmail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message! .".$incrementId;
$from = "randomemail@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
}
}
解决方案
在提交订单时,创建订单的增量ID,在此方法中 Mage_Sales_Model_Service_Quote::submitOrder()
. 。负责创作的行是 $quote->reserveOrderId();
.
如果您想访问它,您可以将其挂钩 sales_model_service_quote_submit_before
.
您将能够在观察者中获得增量ID:
public function doSomething($observer){//observer for the event
$quote = $observer->getEvent()->getQuote();
$incrementId = $quote->getReservedOrderId();
//do stuff
}