【问题标题】:How to display Custom order attribute in Magento back end如何在 Magento 后端显示自定义订单属性
【发布时间】:2014-05-16 01:54:58
【问题描述】:

我正在使用 Magento 1.7 - 我对 Magento 模块开发相当陌生。

我创建了一个名为 Deliverydate 的新订单自定义 EAV 属性,客户将在购物车页面上输入该属性。我创建了一个自定义模块和安装程序脚本,可以在 eav_attribute 表中看到它。

$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');

$setup->addAttribute('order', 'deliverydate', array(
 'position'      => 1,
 'input'         => 'text',
 'backend_type'  => 'varchar',
 'type'          => 'varchar',
 'label'         => 'Choose delivery date',
 'visible'       => 1,
 'required'      => 0,
 'user_defined' => 1,
 'global'        => 1,
 'visible_on_front'  => 1,
));

$installer->endSetup();

但是我已经阅读了很多资料,但不知道如何 1) 保存客户输入的值。 2) 检索值以在 Admin 中显示。

我已阅读有关观察者的这些教程,但似乎无法使用:

这是我的 config.xml 文件

<?xml version="1.0"?>
<config>
  <modules>
    <Mycompany_Deliverydate>
      <version>0.1.0</version>
    </Mycompany_Deliverydate>
  </modules>
  <global>
<resources>
  <deliverydate_setup>
    <setup>
      <module>Mycompany_Deliverydate</module>
      <class>Mycompany_Deliverydate_Model_Resource_Mysql4_Setup</class>
    </setup>
    <connection>
      <use>core_setup</use>
        </connection>
      </deliverydate_setup>
    </resources>
    <events>
    <checkout_type_onepage_save_order>
        <observers>
            <Deliverydate_observer>
                <type>singleton</type>
                <class>deliverydate/observer</class>
                <method>Deliverydate</method>
            </Deliverydate_observer>
        </observers>
    </checkout_type_onepage_save_order>
     </events>
   </global>
</config>

还有我的 Observer.php 文件,其中大部分是我从本网站上的另一个教程/问题中借来的。

class Mycompany_Deliverydate_Model_Observer {
  public function Deliverydate($observer) {

    $event = $observer->getEvent();
    $order = $event->getOrder();

    $order->setDeliverydate(Mage::app()->getRequest()->getPost('delivery_date'));


  }
}

我认为这根本没有被输入 - 我输入了 throw new Exception 并完成了整个订单而没有看到异常。无论如何,我不确定我是否检查了正确的事件 - checkout_type_onepage_save_order - 这是什么时候触发的?而且我不知道setDeliverydate() 函数将在哪里定义,但正如我所说,这种来自另一个来源,也没有在那里定义。

输入的值存储在哪里?

【问题讨论】:

  • 你有没有在观察者方法中得到那个deliverydate属性值?

标签: magento attributes


【解决方案1】:

请查看以下帖子,它会对您有所帮助。如果它没有让您从这个问题中解脱出来,请在此处发表评论

http://chillydraji.wordpress.com/2014/03/03/how-to-create-new-attribute-to-order-in-magento/

【讨论】:

  • 您好,感谢您的信息。它引导了我大部分的方式,但我仍然无法让观察者工作,所以我最终不得不将 $quote-&gt;setDeliveryDate($delivery_date); 放入 OnePageController.php (这是一个自定义结帐模块 - 也许这就是为什么我的观察者是'不工作)
  • 对于自定义属性,我们只能使用一种自定义观察者方法
  • 喜欢每个模块只有 1 个或 Magento 安装中只有 1 个?
  • 我的意思是,我们只能调用一个自定义订单观察者方法@colmde
  • 那么如果另一个模块正在使用它,那么我需要修改那个模块吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2011-07-09
相关资源
最近更新 更多