php - 如何在 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'         => '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_attribute 表中。我还将此添加到 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>

当我下订单时,自定义字段不会保存。如何让它发挥作用?我用这种方式为客户添加了一些自定义字段,它们工作正常。我还可以在 admin/customer 上自动看到我的自定义客户字段,但在 admin/sales_order 中看不到我的自定义订单字段。谢谢

*编辑:

这是我所做的:

我将 observer.php 添加到 companyname/module/model/observer.php

class Company_Module_Model_Observer
{
    public function Deliverydate($observer){
        //get event data
        $event = $observer->getEvent();

                //get order
        $order = $event->getOrder();

        //set the country here
        $order->setDeliverydate('11.11.2012');
        //echo "observer";
        }   
}

这是我的 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>

我认为我的观察者有问题。我认为它没有开火。

*编辑:

我的观察员现在正在工作。文件名必须是 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>

然后在 mymodule/savefield/model/obsever.php 文件中添加:

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);
    }   
}

关于php - 如何在 Magento 中添加自定义字段以订购?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737570/

相关文章:

java - Android:LinearLayout.addView 不渲染添加的 View

android - 使用 XML 翻译的平滑 float 动画

mysql - Magento - 如何在 magento 发票网格中加入发票项目

php - 获取每个记录组的最后一条记录

java - 使用 PHP 对 Android Market 许可响应进行服务器端验证

xml - XPath 检查节点为空

magento - 无法在 Magento 上保存多选属性

magento - 在 Magento 中禁用系统 crontab 作业

php - 安装 mediawiki 1.16.5 时如何设置 session.save_path 值

php - 从 mysql 中提取值并以 php 形式编辑