【问题标题】:Magento - Saving data in to order during adminhtml_sales_order_create_process_data eventMagento - 在 adminhtml_sales_order_create_process_data 事件期间将数据保存到订单中
【发布时间】:2012-02-17 20:10:08
【问题描述】:

我在“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() 将数据保存在报价/订单对象中,然后在报价/订单保存后设置另一个观察者并将其保存到那里的订单,但此时没有报价或订单对象可用!

有什么想法吗? 谢谢

【问题讨论】:

    标签: events magento


    【解决方案1】:

    我没有清楚地理解你的问题,但对你来说什么可能有意义:

    1. 每个订单都会预留 incrementId(orderId?)。
    2. 每个订单都有自己的保护代码。
    3. 对于订单保存,应该有类似 sales_order_save_after 和 sales_order_save_before 事件。

    更新 1

    总的来说,目前我看到了一种解决方案:

    来自

    adminhtml_sales_order_create_process_data
    

    你应该得到

    $observer->getOrderCreateModel()
    

    哪个有方法

    $model->getQuote()
    

    报价有

    $quote->getReservedOrderId()
    

    WHich 应该返回你的 order_id。

    【讨论】:

    • 谢谢,但我不能使用 sales_order_place_before/after,因为这些事件无权访问请求参数。 (或者至少我看不到获得它的方法?)。如何从 adminhtml_sales_order_create_process_data 中获取 orderId?
    • 啊,这是一个好点!是的,它确实得到了我需要的东西。我会做一些快速测试并报告回来。谢谢。
    • 您对 Mage::app()->getRequest() 的第一条评论是我所缺少的,现在它运行良好!感谢您的帮助。
    猜你喜欢
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2012-10-31
    • 2023-03-13
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多