【发布时间】: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