2

ここのチュートリアルに従っていました: 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() が請求ステップでのみ呼び出されたことを確認できました。そのため、フィールドを移動しても記録されませんでした。

レビュー注文ステップで保存する必要がある別のフックはありますか?

4

1 に答える 1

0

Found my answer in this post. Sorry to have wasted a question, but hopefully someone will be able to benefit.

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

Basically a js file is serializing the input fields. I had to slip it in with the agreements array of field names.

于 2012-11-05T06:55:27.613 に答える