添加自定义字段以查看Magento Checkout中的订单步骤

时间:2012-11-03 21:38:26

标签: magento checkout custom-fields

我在这里进行了演练:http://www.excellencemagentoblog.com/magento-add-custom-fields-checkout-page

我最初要求打开一个关于自定义字段的问题,当字段移到审核订单步骤而不是作为引用文章的结算步骤时,该字段不会保存到表中。所以我正在改写我的问题,因为我尽可能地缩小了这个范围。这是我的Observer类

class Excellence_Custom_Model_Observer{
public function saveQuoteBefore($evt){
    $quote = $evt->getQuote();
    $post = Mage::app()->getFrontController()->getRequest()->getPost();
    if(isset($post['custom']['sales_person'])){
        $var = $post['custom']['sales_person'];
        $quote->setSalesPerson($var); 
    }
}
public function saveQuoteAfter($evt){
    $quote = $evt->getQuote();
    if($quote->getSalesPerson()){
        $var = $quote->getSalesPerson();
        if(!empty($var)){
            $model = Mage::getModel('custom/custom_quote');
            $model->deteleByQuote($quote->getId(),'sales_person');
            $model->setQuoteId($quote->getId());
            $model->setKey('sales_person');
            $model->setValue($var);
            $model->save();
        }
    }
}
public function loadQuoteAfter($evt){
    $quote = $evt->getQuote();
    $model = Mage::getModel('custom/custom_quote');
    $data = $model->getByQuote($quote->getId());
    foreach($data as $key => $value){
        $quote->setData($key,$value);
    }
}
public function saveOrderAfter($evt){
    $order = $evt->getOrder();
    $quote = $evt->getQuote();
    if($quote->getSalesPerson()){
        $var = $quote->getSalesPerson();
        if(!empty($var)){
            $model = Mage::getModel('custom/custom_order');
            $model->deleteByOrder($order->getId(),'sales_person');
            $model->setOrderId($order->getId());
            $model->setKey('sales_person');
            $model->setValue($var);
            $order->setSalesPerson($var);
            $model->save();
        }
    }
}
public function loadOrderAfter($evt){
    $order = $evt->getOrder();
    $model = Mage::getModel('custom/custom_order');
    $data = $model->getByOrder($order->getId());
    foreach($data as $key => $value){
        $order->setData($key,$value);
    }
}

}

通过Mage :: log()我能够看到saveQuoteBefore()仅在结算步骤中被调用。这就是为什么当我移动场地时,它从未记录过。

除了审核订单步骤之外,我还需要另外一个钩子吗?

1 个答案:

答案 0 :(得分:0)

在这篇文章中找到我的答案。很抱歉浪费了一个问题,但希望有人能够受益。

How to get Post Data from Magento's Onepage Checkout?

基本上js文件正在序列化输入字段。我不得不使用协议数组的字段名称。