2012-02-17 78 views
0

我在“adminhtml_sales_order_create_process_data”上设置了一个观察者。Magento - 在adminhtml_sales_order_create_process_data事件期间保存数据以订购

我添加了一个新的表单字段(自定义属性添加)到管理员创建订单:

app/design/adminhtml/default/default/template/sales/order/create/data.phtml 

然后在我的观察我拍摄的那场像这样:

$orderRequest = $data->getEvent()->getRequest('order'); 
$customField = $orderRequest['customfield']; 

我需要存储在我的分贝customField和orderId(但当然在我的观察员称为订单尚未创建,所以我不能得到任何id)点

理想情况下,我希望能够使用setData()将数据保存在报价/订单对象中,然后在报价/订单保存后将其另存为观察员,并将其保存为订单对象,但此时没有报价或订单对象可用!

任何想法? 感谢

回答

0

我并不清楚地理解你的问题,但什么可能让你感觉:(?订单ID)

  1. 每为了让预约incrementId。
  2. 每个订单都有自己的保护代码。
  3. 对于订单保存,应该有类似sales_order_save_after和sales_order_save_before事件。

更新1

那么所有的一切目前我看到一个解决办法:

adminhtml_sales_order_create_process_data 

你应该得到

$observer->getOrderCreateModel() 

其中有实现方法具d

$model->getQuote() 

报价有

$quote->getReservedOrderId() 

应返回你ORDER_ID。

+0

谢谢,但我无法使用sales_order_place_before/after,因为这些事件无法访问请求参数。 (或者至少我看不到一个方法来得到它?)。我如何从adminhtml_sales_order_create_process_data中获取orderId? – sulman 2012-02-17 11:53:02

+0

Mage :: app() - > getRequest()不适合你吗? – 2012-02-17 11:56:09

+0

啊,这是一个好点!是的,它确实得到了我所需要的。我会做一些快速测试并报告回来。谢谢。 – sulman 2012-02-17 12:06:27