Php 如何在Magento中将自定义字段添加到订单?
我想在Magento的一页签出中添加一个新的自定义字段。我已使用安装程序创建了一个模块:Php 如何在Magento中将自定义字段添加到订单?,php,xml,magento,Php,Xml,Magento,我想在Magento的一页签出中添加一个新的自定义字段。我已使用安装程序创建了一个模块: $installer = $this; $installer->startSetup(); $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); $setup->addAttribute('order', 'deliverydate', array( 'position' => 1, 'input'
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttribute('order', 'deliverydate', array(
'position' => 1,
'input' => 'text',
'type' => 'varchar',
'label' => 'Choose delivery date',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'global' => 1,
'visible_on_front' => 1,
));
$installer->endSetup();
我可以通过phpmyadmin看到该字段已添加到mage_eav_属性表中。我还将此添加到shipping-method.phtml中:
<div class="form-list field">
<label for="deliverydate"><?php echo $this->__('Choose delivery date') ?></label>
<div class="input-box">
<input type="text" name="deliverydate" id="deliverydate" title="<?php echo $this->__('deliverydate') ?>" class="input-text" />
</div>
</div>
下面是我的config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Company_Module>
<version>0.1.0</version>
</Company_Module>
</modules>
<global>
<resources>
<Company_Module_setup>
<setup>
<module>Company_Module</module>
<class>Company_Module_Model_Resource_Mysql4_Setup</class>
</setup>
</Company_Module_setup>
</resources>
<events>
<checkout_type_onepage_save_order>
<observers>
<Company_Module_Model_Observer>
<type>singleton</type>
<class>Company_Module_Model_Observer</class>
<method>Deliverydate</method>
</Company_Module_Model_Observer>
</observers>
</checkout_type_onepage_save_order>
</events>
</global>
</config>
0.1.0
公司模块
公司\模块\模型\资源\ Mysql4\设置
独生子女
公司模块模型观察员
交货日期
我想我的观察者有问题。我想它没有开火
*编辑:
我的观察员正在工作。文件名必须是Observer.php,而不是Observer.php。添加一个观察者:
<events>
<checkout_type_onepage_save_order>
<observers>
<Savefield_observer>
<type>singleton</type>
<class>mymodule/observer</class>
<method>Savefield</method>
</Savefield_observer>
</observers>
</checkout_type_onepage_save_order>
</events>
我在我的问题中添加了更多的信息。它现在起作用了,你的回答为我指明了正确的方向。谢谢
$fieldVal
来自何处?您如何使其在以后的管理中也出现在订单上?每次客户下订单后,我们都需要验证订单。我们的销售一再代表相同的订单。因此,我可以向销售订单添加自定义字段,如验证。我该怎么做?你能分享完整的代码吗。我必须添加订单回顾选项卡。。
<events>
<checkout_type_onepage_save_order>
<observers>
<Savefield_observer>
<type>singleton</type>
<class>mymodule/observer</class>
<method>Savefield</method>
</Savefield_observer>
</observers>
</checkout_type_onepage_save_order>
</events>
class Mymodule_Savefield_Model_Observer
{
public function Savefield($observer){
//get event data
$event = $observer->getEvent();
//get order
$order = $event->getOrder();
//set the variable here
$order->setMyField($fieldVal);
}
}