【问题标题】:Custom attribulte value is not storing to order_attribute table of Magento自定义属性值未存储到 Magento 的 order_attribute 表中
【发布时间】:2017-05-03 14:16:30
【问题描述】:

我创建了一个模块,用于在 sales_flat_order 自定义字段中存储自定义结帐字段值。该文件已创建。但它在下订单后不存储的价值。我是 Magento 的新手。

app/code/local/Iclp/Orderattribute/etc/config.xml
<?xml version="1.0"?>
<config>
  <modules>
    <Iclp_Orderattribute>
      <version>0.1.0</version>
    </Iclp_Orderattribute>
  </modules>
  <global>
    <helpers>
      <orderattribute>
        <class>Iclp_Orderattribute_Helper</class>
      </orderattribute>
    </helpers>
    <models>
      <orderattribute>
        <class>Iclp_Orderattribute_Model</class>
        <resourceModel>orderattribute_mysql4</resourceModel>
      </orderattribute>
    </models>
    <resources>
      <salesattribute1422420996_setup>
        <setup>
          <module>Iclp_Orderattribute</module>
          <class>Mage_Sales_Model_Mysql4_Setup</class>
        </setup>
        <connection>
          <use>core_setup</use>
        </connection>
      </salesattribute1422420996_setup>
      <salesattribute1422420996_write>
        <connection>
          <use>core_write</use>
        </connection>
      </salesattribute1422420996_write>
      <salesattribute1422420996_read>
        <connection>
          <use>core_read</use>
        </connection>
      </salesattribute1422420996_read>
    </resources>
    <events>
      <checkout_type_onepage_save_order> <!-- identifier of the event we want to catch -->
        <observers>
          <checkout_type_onepage_save_order_handler> <!-- identifier of the event handler -->
            <type>model</type> <!-- class method call type; valid are model, object and singleton -->
            <class>orderattribute/observer</class> <!-- observers class alias -->
            <method>getorderattribute</method>  <!-- observer's method to be called -->
            <args></args> <!-- additional arguments passed to observer -->
          </checkout_type_onepage_save_order_handler>
        </observers>
      </checkout_type_onepage_save_order>
    </events>
  </global>
</config> 
app/code/local/Iclp/Orderattribute/Model/Observer.php

<?php
class Iclp_Orderattribute_Model_Observer
{

            public function getorderattribute(Varien_Event_Observer $observer)
            {

        $event = $observer->getEvent();
        $order = $event->getOrder();
        $fieldVal = Mage::app()->getFrontController()->getRequest()->getParams();

        $order->setOrder_Attribute($fieldVal['order_attribute']);
        //echo "<script>alert('fff');</script>" ;
            }

}


sql/salesattribute1422420996_setup/mysql4-install-0.1.0.php

<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute("order", "order_attribute", array("type"=>"varchar"));
$installer->endSetup();

【问题讨论】:

    标签: magento events observers


    【解决方案1】:

    我认为您的模块中存在错误配置。

    <global>
    ...
        <fieldsets>
            <sales_convert_quote>
                <your_special_attribute>
                    <to_order>*</to_order>
                </your_special_attribute>
            </sales_convert_quote>
        </fieldsets>
    ...
    </global>
    

    您是否为 qoute 分配了新属性?

    $installer->addAttribute("quote", "order_attribute", array("type"=>"varchar"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多