2012-11-03 51 views
2

我在此处查看演练:http://www.excellencemagentoblog.com/magento-add-custom-fields-checkout-page在Magento结账中添加自定义字段以审核订单步骤

我最初被要求打开一个关于自定义字段不保存到表格的问题,当字段被移动到审查顺序步骤而不是引用文章的开票步骤时。所以我正在改写我的问题,因为我尽可能缩小了这个范围。这是我的观察类

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); 
    } 
} 

}

通过法师::日志()我能看到saveQuoteBefore()只呼吁计费一步。这就是为什么当我移动领域时,它从未记录。

是否有另一个钩子,我需要保存它在审查顺序步骤?

回答

相关问题