在magento中向订单添加新属性 [英] Adding a new attribute to order in magento

查看:65
本文介绍了在magento中向订单添加新属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想向订单添加对客户不可见的属性.我只想在数据库中使用它并为每个订单存储一个特定的值.我想根据此值打印订单.因此,我该如何在magento中添加订单属性.该属性就像订单状态一样.如果我想在管理员/销售/订单中显示该属性,我该怎么做?

I want to add an attribute to order that will not be visible to customer. I just want to use it in database and storing a specific value for each order. I want to print order according to this value. So how can i add an order attribute in magento. The attribute is just like status of order. Further on if i want to show that attribute in admin/sales/orders how can i do that?

推荐答案

假设您要在订单中添加my_custom_input_field并向管理员创建订单页面添加字段(要将字段添加到前端,您只需要将输入字段添加到前端模板并仔细检查观察者)

Assuming that you want to add my_custom_input_field to your order and add a field to your admin create order page (to add the field to the frontend you just need to add the input field to the front template and double check the observer)

在/app/code/local/MageIgniter/CustomOrderStatus/etc/config.xml

In /app/code/local/MageIgniter/CustomOrderStatus/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <MageIgniter_CustomOrderStatus>
            <version>1.1</version>
        </MageIgniter_CustomOrderStatus>
    </modules>

    <global> 
         <fieldsets>
            <sales_convert_quote>                           
                <my_custom_input_field><to_order>*</to_order></my_custom_input_field>
            </sales_convert_quote>

            <sales_convert_order>                                              
                <my_custom_input_field><to_quote>*</to_quote></my_custom_input_field>
            </sales_convert_order>
        </fieldsets>
        <helpers>
            <customorderstatus>
                <class>MageIgniter_CustomOrderStatus_Helper</class>
            </customorderstatus>            
        </helpers>

        <models>
            <customorderstatus>
                <class>MageIgniter_CustomOrderStatus_Model</class>
                <resourceModel>customorderstatus_mysql4</resourceModel>
            </customorderstatus>
        </models>
        <resources>
            <customorderstatus_setup>
                <setup>
                    <module>MageIgniter_CustomOrderStatus</module>
                    <class>Mage_Sales_Model_Mysql4_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </customorderstatus_setup>
            <customorderstatus_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </customorderstatus_write>
            <customorderstatus_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </customorderstatus_read>
        </resources>

        <events>
            <adminhtml_sales_order_create_process_data_before>
                <observers>
                    <customorderstatus>
                        <type>singleton</type>
                        <class>customorderstatus/observer</class>
                        <method>saveCustomData</method>
                    </customorderstatus>
                </observers>
            </adminhtml_sales_order_create_process_data_before>
        </events>

        <blocks>
            <customorderstatus>
                <class>MageIgniter_CustomOrderStatus_Block</class>
            </customorderstatus>
        </blocks>
    </global>
</config>

在/app/code/local/MageIgniter/CustomOrderStatus/sql/customorderstatus_setup/mysql4-install-1.1.php

In /app/code/local/MageIgniter/CustomOrderStatus/sql/customorderstatus_setup/mysql4-install-1.1.php

<?php
$installer = $this;
$installer->startSetup();

$installer->addAttribute("order", "my_custom_input_field", array("type"=>"varchar"));
$installer->addAttribute("quote", "my_custom_input_field", array("type"=>"varchar"));
$installer->endSetup();

在/app/code/local/MageIgniter/CustomOrderStatus/Model/Observer.php中

In /app/code/local/MageIgniter/CustomOrderStatus/Model/Observer.php

class MageIgniter_CustomOrderStatus_Model_Observer 
{
    public function saveCustomData($event)
    {
        $quote = $event->getSession()->getQuote();
        $quote->setData('my_custom_input_field', $event->getRequestModel()->getPost('my_custom_input_field'));

        return $this;
    }
}

(您应该避免对核心默认设置进行更改-您应该对此进行一些研究)

(You should avoid make changes to core default - you should do some research on way around this)

在/app/design/adminhtml/default/default/template/sales/order/view/info.phtml

In /app/design/adminhtml/default/default/template/sales/order/view/info.phtml

<?php if($_order->getMyCustomInputField()): ?>
<tr>
    <td class="label"><label><?php echo Mage::helper('sales')->__('My Custom Input Field') ?></label></td>
    <td class="value"><strong><?php echo $_order->getMyCustomInputField() ?></strong></td>
</tr>
<?php endif; ?>

在/app/design/adminhtml/default/default/template/sales/order/create/form/account.phtml

In /app/design/adminhtml/default/default/template/sales/order/create/form/account.phtml

(要添加到前端,请更改value="<?php echo Mage...>")

(to add to frontend change the value="<?php echo Mage...>")

<input id="my_custom_input_field" name="my_custom_input_field" value="<?php echo Mage::getSingleton('adminhtml/session_quote')->getQuote()->getMyCustomInputField() ?>" class="input-text" type="text">

这篇关于在magento中向订单添加新属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆