การเพิ่มคอลัมน์ในตารางลูกค้าโดยใช้ผู้สังเกตการณ์หรือแทนที่ตารางลูกค้า


28

ฉันกำลังประสบปัญหาในการเพิ่มคอลัมน์ในตารางลูกค้าและแสดงค่าในคอลัมน์นั้น

นี่คือรหัสผู้สังเกตการณ์ที่ฉันพยายามแสดงคอลัมน์: -

if ($block->getType() == 'adminhtml/customer_grid') {
          $customer = $observer->getCustomer();
          $collection = Mage::getResourceModel('customer/customer_collection');
        $block->addColumnAfter('mobile', array(
                'header'    => 'Mobile No.',
                'type'      => 'text',
                'index'     => 'mobile',
            ), 'email');
        }   

สิ่งนี้จะเพิ่มคอลัมน์ แต่ไม่มีค่าใดถูกแสดงภายใต้


คุณกำลังทำสิ่งนี้กับเหตุการณ์อะไร อาจเป็นไปได้ว่าคอลเลกชันกริดไม่มีคอลัมน์มือถือและคุณต้องเพิ่มคอลัมน์นี้ลงในคอลเลกชันด้วย ควรเข้าถึงได้ใน$block->getCollection()
Zefiryn

@Zefiryn ฉันจะทำอย่างไร ?? ฉันจะเพิ่มคอลัมน์มือถือในคอลเลกชันโดยใช้ผู้สังเกตการณ์ได้อย่างไร
Kuldeep

1
@Kuldeep คำตอบที่สองดีกว่าเพราะหลีกเลี่ยงการทำซ้ำรหัส คุณอาจต้องการที่จะยอมรับว่า
อเล็กซ์

คำตอบ:


25

หากต้องการเพิ่มคอลัมน์ในตารางลูกค้าคุณต้องแทนที่ 2 Mage_Adminhtml_Block_Customer_Gridสิ่งในบล็อก

  • _prepareCollection - เพื่อเพิ่มคุณสมบัติของคุณในคอลเลกชัน
  • _prepareColumns - เพื่อเพิ่มคอลัมน์ในกริดของคุณ

สำหรับสิ่งนี้คุณควรสร้างส่วนขยายใหม่ Easylife_Customerขอเรียกว่า สำหรับสิ่งนี้คุณจะต้องใช้ไฟล์ต่อไปนี้:
app/etc/module/Easylife_Customer.xml- ไฟล์ประกาศ

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Customer>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Customer /><!-- your module should depend on Mage_Customer -->
                <Mage_Adminhtml /><!-- your module should depend on Mage_Adminhtml also -->
            </depends>
        </Easylife_Customer>
    </modules>
</config>

app/code/local/Easylife/Customer/etc/config.xml - ไฟล์การกำหนดค่า

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Customer>
            <version>0.0.1</version>
        </Easylife_Customer>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <customer_grid>Easylife_Customer_Block_Adminhtml_Customer_Grid</customer_grid><!-- rewrite the customer grid -->
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>

app/code/local/Easylife/Customer/Block/Adminhtml/Customer/Grid.php- ตารางลูกค้าของคุณเอง อ่านความคิดเห็นของฉันในรหัส:

<?php
class Easylife_Customer_Block_Adminhtml_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid{
    /**
     * override the _prepareCollection to add an other attribute to the grid
     * @return $this
     */
    protected function _prepareCollection(){
        $collection = Mage::getResourceModel('customer/customer_collection')
            ->addNameToSelect()
            ->addAttributeToSelect('email')
            ->addAttributeToSelect('created_at')
            ->addAttributeToSelect('group_id')
            //if the attribute belongs to the customer, use the line below
            ->addAttributeToSelect('mobile')
            //if the attribute belongs to the customer address, comment the line above and use the one below
            //->joinAttribute('mobile', 'customer_address/mobile', 'default_billing', null, 'left')
            ->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
            ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
            ->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
            ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
            ->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');

        $this->setCollection($collection);
        //code from Mage_Adminhtml_Block_Widget_Grid::_prepareCollection()
        //since calling parent::_prepareCollection will render the code above useless
        //and you cannot call in php parent::parent::_prepareCollection()
        if ($this->getCollection()) {

            $this->_preparePage();

            $columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort);
            $dir      = $this->getParam($this->getVarNameDir(), $this->_defaultDir);
            $filter   = $this->getParam($this->getVarNameFilter(), null);

            if (is_null($filter)) {
                $filter = $this->_defaultFilter;
            }

            if (is_string($filter)) {
                $data = $this->helper('adminhtml')->prepareFilterString($filter);
                $this->_setFilterValues($data);
            }
            else if ($filter && is_array($filter)) {
                $this->_setFilterValues($filter);
            }
            else if(0 !== sizeof($this->_defaultFilter)) {
                $this->_setFilterValues($this->_defaultFilter);
            }

            if (isset($this->_columns[$columnId]) && $this->_columns[$columnId]->getIndex()) {
                $dir = (strtolower($dir)=='desc') ? 'desc' : 'asc';
                $this->_columns[$columnId]->setDir($dir);
                $this->_setCollectionOrder($this->_columns[$columnId]);
            }

            if (!$this->_isExport) {
                $this->getCollection()->load();
                $this->_afterLoadCollection();
            }
        }

        return $this;
    }

    /**
     * override the _prepareColumns method to add a new column after the 'email' column
     * if you want the new column on a different position just change the 3rd parameter
     * of the addColumnAfter method to the id of your desired column
     */
    protected function _prepareColumns(){
        $this->addColumnAfter('mobile', array(
            'header'    => Mage::helper('customer')->__('Mobile'),
            'index'     => 'mobile'
        ),'email');
        return parent::_prepareColumns();
    }
}

ล้างแคชและคุณควรพร้อม


ขอบคุณคนที่คุณรักมันทำงานได้อย่างมีเสน่ห์: D. ขอบคุณมาก
Kuldeep

ดังที่ฉันพบในคำตอบนี้คุณสามารถเรียกวิธีการของปู่ย่าตายายโดยใช้ชื่อชั้นเรียนในกรณีนี้เช่นนี้:Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
kiatng

นั่นไม่ได้เรียก methot ของปู่ย่าตายาย คุณกำลังเรียกวิธีการไม่คงที่เป็น atatic ไม่เป็นไร
Marius

39

วิธีผู้สังเกตการณ์:

ประกาศผู้สังเกตการณ์ 2 คนในไฟล์ config.xml ของคุณ: รายการหนึ่งเพื่อเพิ่มคอลัมน์ของคุณในบล็อกกริดและอีกหนึ่งรายการเพื่อโหลดข้อมูลจากแอตทริบิวต์ที่เกี่ยวข้อง:

<adminhtml>
    <events>
        <core_block_abstract_to_html_before>
            <observers>
                <{observer_name}>
                    <type>singleton</type>
                    <class>{namespace}_{module}/observer</class>
                    <method>beforeBlockToHtml</method>
                </{observer_name}>
            </observers>
        </core_block_abstract_to_html_before>
        <eav_collection_abstract_load_before>
            <observers>
                <{observer_name}>
                    <class>{namespace}_{module}/observer</class>
                    <method>beforeCollectionLoad</method>
                </{observer_name}>
            </observers>
        </eav_collection_abstract_load_before>
    </events>
</adminhtml>

สร้างคลาส Observer ด้วยวิธีการที่เหมาะสม:

class {Namespace}_{Module}_Model_Observer
{
    public function beforeBlockToHtml(Varien_Event_Observer $observer)
    {
        $grid = $observer->getBlock();

        /**
         * Mage_Adminhtml_Block_Customer_Grid
         */
        if ($grid instanceof Mage_Adminhtml_Block_Customer_Grid) {
            $grid->addColumnAfter(
                '{column_code}',
                array(
                    'header' => Mage::helper('{Module}_customer')->__('{{column_name}}'),
                    'index'  => '{column_code}'
                ),
                'entity_id'
            );
        }
    }

    public function beforeCollectionLoad(Varien_Event_Observer $observer)
    {
        $collection = $observer->getCollection();
        if (!isset($collection)) {
            return;
        }

        /**
         * Mage_Customer_Model_Resource_Customer_Collection
         */
        if ($collection instanceof Mage_Customer_Model_Resource_Customer_Collection) {
            /* @var $collection Mage_Customer_Model_Resource_Customer_Collection */
            $collection->addAttributeToSelect('{attribute_code}');
        }
    }
}

1
ตัวเลือกที่ดีที่สุดแน่นอน ไม่มีการเขียน
ซ้ำ

น่าเสียดายที่มันใช้ไม่ได้กับการส่งออก CSV - คอลัมน์หายไป
อเล็กซ์

มันจะเป็นอย่างไรสำหรับหน้าตารางผลิตภัณฑ์?
frostshoxx

การเขียน
ซ้ำ

ฉันเพิ่งจะแนะนำและใช้งานเหตุการณ์ที่ Mage_Adminhtml_Block_Widget_Grid :: Mage_Adminhtml_Block_Widget_Grid () ที่มีความเฉพาะเจาะจงมากกว่า
Christophe Ferreboeuf

9

ฉันตอบกลับความคิดเห็นของอเล็กซ์:

หากต้องการส่งออกเป็น CSV ให้ใช้เช่นกัน

core_block_abstract_prepare_layout_before

แทน

core_block_abstract_to_html_before

4

สมมติว่า$blockเป็นตัวอย่างของMage_Adminhtml_Block_Customer_Gridแล้ว

$block->getCollection()Mage_Customer_Model_Resource_Customer_Collectionควรกลับคอลเลกชันของลูกค้าที่ใช้ในตารางซึ่งเป็นตัวอย่างของ เมื่อคุณดูรหัสในMage_Adminhtml_Block_Customer_Grid::_prepareCollection()คุณจะเห็นว่าคุณสามารถเพิ่มคุณสมบัติให้กับคอลเลกชันนั้นได้อย่างไร

มันควรจะเป็น (แม้ว่าจะไม่ได้ทดสอบ)

สมมติว่ามีแอททริบิวต์มือถือถูกเพิ่มเข้าไปในเอนทิตีของลูกค้า

$block->getCollection()
      ->addAttributeToSelect('mobile');

หรือถ้ามือถือเป็นและแอตทริบิวต์เพิ่มไปยังนิติบุคคลที่อยู่การเรียกเก็บเงิน

$block->getCollection()
      ->joinAttriubte('mobile','customer_address/mobile','defaul_billing',null,'left');

สวัสดี @Zefiryn ฉันลองทั้งสองรหัสที่คุณส่งไป แต่ไม่มีรหัสใดที่ใช้งานได้
Kuldeep

บอกฉันเกี่ยวกับเหตุการณ์ที่คุณเรียกใช้ผู้สังเกตการณ์นี้
Zefiryn

นี่เป็นวิธีการที่ดี แต่ใช้ได้เมื่อส่งออกกริดเท่านั้น สิ่งนี้เกิดขึ้นเพราะในตอนท้ายของMage_Adminhtml_Block_Widget_Grid::_prepareCollectionสิ่งนี้ถูกเรียกว่า: $this->getCollection()->load(). ซึ่งหมายความว่าการปรับเปลี่ยนอื่น ๆ ในคอลเลกชันจะถูกละเว้น แต่อย่างที่บอกว่านี่เป็นวิธีที่ดีมากในการส่งออกกริด เมื่อทำการloadเอ็กซ์ปอร์ตเมธอดจะไม่ถูกเรียกจนกระทั่งในภายหลัง
Marius


2

อีกวิธีหนึ่ง:

เขียนบล็อกกริดของลูกค้าด้วยโมดูลที่กำหนดเองของคุณและใช้setCollection()ฟังก์ชั่นเพื่อดึงแอตทริบิวต์ที่กำหนดเองของคุณ

แอป / รหัส / [ท้องถิ่นหรือชุมชน] /YourCompany/YourModule/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <yourcompany_yourmodule>
            <version>0.1.0</version>
        </yourcompany_yourmodule>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <customer_grid>YourCompany_YourModule_Block_Customer_Grid</customer_grid>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>

แอป / รหัส / [ท้องถิ่นหรือชุมชน] /YourCompany/YourModule/Block/Customer/Grid.php

<?php

class YourCompany_YourModule_Block_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
    public function setCollection($collection)
    {
        // your field/attribute to fetch, assuming it to be 'mobile'
        $collection->addAttributeToSelect('mobile'); 
        parent::setCollection($collection);
    }

    protected function _prepareColumns()
    {
        parent::_prepareColumns();

        $this->addColumn('mobile', array(
                'header'=> Mage::helper('customer')->__('Mobile'),
                'index' => 'mobile',
                'type'  => 'text',
                'width' => '100px',
        ));

        // show your new column named 'mobile' after ZIP column
        $this->addColumnsOrder('mobile', 'billing_postcode');

        return parent::_prepareColumns();
    }
}

1
ขอบคุณสำหรับรหัส ตอนนี้เราจะให้คำสั่งซื้อเพื่อแสดงคุณลักษณะนี้ในตารางลูกค้าได้อย่างไร
เจ้าชาย Patel

คุณสามารถให้ลำดับคอลัมน์โดยใช้addColumnsOrderฟังก์ชั่น โปรดตรวจสอบคำตอบที่อัพเดต
Mukesh Chapagain

ฉันใช้ $ this-> addColumnAfter () แต่ $ this-> addColumnsOrder () ยังใช้งานได้ขอบคุณสำหรับการตอบกลับของคุณ
เจ้าชาย Patel

IMHO ใช้ setCollection () เป็นจริงทางออกที่ดีที่สุด (ผมไม่ชอบที่จะเพิ่มสังเกตการณ์เหตุการณ์ loadcollection ทุกเสียงไม่มากประสิทธิภาพฉลาด ... )
รา

0

ฉันต้องการลบคอลัมน์เริ่มต้นและเพิ่มคอลัมน์เพิ่มเติมในตารางลูกค้า ฉันตัดสินใจที่จะกำหนดคอลัมน์ ครั้งแรกที่ฉันเพิ่ม 2 กล่องหลายตัวเลือกในsystem.xml :

<config>
    <sections>
        <extendedcustomer translate="label" module="extendedcustomer">
            <label>Extended Customer</label>
            <tab>customer</tab>
            <sort_order>100</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <groups>
                <manage_grid translate="label">
                    <label>Manage Customer Grid in Backend</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>10</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <fields>
                        <remove translate="label">
                            <label>Remove Columns</label>
                            <frontend_type>multiselect</frontend_type>
                            <source_model>extendedcustomer/source_gridColumn</source_model>
                            <sort_order>10</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </remove>
                        <add translate="label">
                            <label>Add Columns</label>
                            <frontend_type>multiselect</frontend_type>
                            <source_model>extendedcustomer/source_attributeCode</source_model>
                            <sort_order>20</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </add>                       
                    </fields>
                </manage_grid>
            </groups>
        </extendedcustomer>
    </sections>
</config>

แหล่งที่มาของโมเดลตรงไปตรงมา:

class SomeCo_ExtendedCustomer_Model_Source_GridColumn
{
    public function toOptionArray()
    {     
        return [
            ['value' => 'name', 'label' => 'Name'],
            ['value' => 'email', 'label' => 'Email'],
            ['value' => 'group', 'label' => 'Group'],
            ['value' => 'billing_telephone', 'label' => 'Telephone'],
            ['value' => 'billing_postcode', 'label' => 'ZIP'],
            ['value' => 'billing_country_id', 'label' => 'Country'],
            ['value' => 'billing_region', 'label' => 'State/Province'],
            ['value' => 'customer_since', 'label' => 'Customer Since'],
            ['value' => 'website_id', 'label' => 'Website'],
            ['value' => 'action', 'label' => 'Action']
        ];
    }
}

แหล่งข้อมูลรุ่นที่สอง

class SomeCo_ExtendedCustomer_Model_Source_AttributeCode
{
    public function toOptionArray()
    {     
        $collection = Mage::getResourceModel('customer/attribute_collection')
            ->addFieldToSelect(['attribute_code', 'frontend_label'])
            ->addFieldToFilter('frontend_label', ['notnull'=>'notnull'])
            ->addFieldToFilter('is_user_defined', 1);
        $options = [];
        foreach ($collection as $item) {
            $options[] = [
                'value'     => $item->getData('attribute_code'),
                'label'     => $item->getData('frontend_label')
            ];
        }
        return $options;
    }
}

จากนั้นแทนที่คลาสกริด:

class SomeCo_ExtendedCustomer_Block_Adminhtml_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
    public function __construct()
    {
        parent::__construct();
        if ($remove = Mage::getStoreConfig('extendedcustomer/manage_grid/remove')) {
            $remove = explode(',', $remove);
        } else {
            $remove = false;
        }
        $this->setRemoveList($remove);

        if ($add = Mage::getStoreConfig('extendedcustomer/manage_grid/add')) {
            $add = explode(',', $add);
        } else {
            $add = false;
        }
        $this->setAddList($add);
    }

    protected function _prepareCollection()
    {
        if ($remove = $this->getRemoveList()) {
            $collection = Mage::getResourceModel('customer/customer_collection');
            if (!in_array('name', $remove)) {
                $collection->addNameToSelect();
            }
            foreach (['postcode', 'city', 'telephone', 'region', 'country_id'] as $suffix) {
                if (!in_array('billing_'.$suffix, $remove)) {
                    $collection->joinAttribute('billing_'.$suffix, 'customer_address/'.$suffix, 'default_billing', null, 'left');
                }
            }
        } else {
            $collection = Mage::getResourceModel('customer/customer_collection')
                ->addNameToSelect()
                //->addAttributeToSelect('email') // static attributes are added by default
                //->addAttributeToSelect('created_at')
                //->addAttributeToSelect('group_id')
                ->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
                ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
                ->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
                ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
                ->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');
        }

        if ($add = $this->getAddList()) {
            $collection->addAttributeToSelect($add);
        }

        $this->setCollection($collection);

        return Mage_Adminhtml_Block_Widget_Grid::_prepareCollection(); // call grandParent
    }

    protected function _prepareColumns()
    {
        $this->addColumn('entity_id', array(
            'header'    => Mage::helper('customer')->__('ID'),
            'width'     => '50px',
            'index'     => 'entity_id',
            'type'  => 'number',
        ));

        $remove = $this->getRemoveList();

        if (!$remove || !in_array('name', $remove)) {           
            $this->addColumn('name', array(
                'header'    => Mage::helper('customer')->__('Name'),
                'index'     => 'name'
            ));
        }

        if ($add = $this->getAddList()) {
            $collection = Mage::getResourceModel('customer/attribute_collection')
                ->addFieldToSelect(['attribute_code', 'frontend_label', 'source_model'])
                ->addFieldToFilter('attribute_code', ['in' => $add]);
            foreach ($collection as $item) {
                if ($source = $item->getSourceModel()) {
                    $this->addColumn($item->getAttributeCode(), array(
                        'header'    =>  $item->getFrontendLabel(),
                        'width'     =>  '100',
                        'index'     =>  $item->getAttributeCode(),
                        'type'      =>  'options',
                        'options'   =>  Mage::getSingleton($source)->toOptionHash(false)
                    ));
                } else {
                    $this->addColumn($item->getAttributeCode(), array(
                        'header'    => $item->getFrontendLabel(),
                        'width'     => '150',
                        'index'     => $item->getAttributeCode()
                    ));
                }
            }
        }

        if (!$remove || !in_array('email', $remove)) {            
            $this->addColumn('email', array(
                'header'    => Mage::helper('customer')->__('Email'),
                'width'     => '150',
                'index'     => 'email'
            ));
        }

        if (!$remove || !in_array('group', $remove)) {
            $groups = Mage::getResourceModel('customer/group_collection')
                ->addFieldToFilter('customer_group_id', array('gt'=> 0))
                ->load()
                ->toOptionHash();

            $this->addColumn('group', array(
                'header'    =>  Mage::helper('customer')->__('Group'),
                'width'     =>  '100',
                'index'     =>  'group_id',
                'type'      =>  'options',
                'options'   =>  $groups,
            ));
        }

        if (!$remove || !in_array('billing_telephone', $remove)) {
            $this->addColumn('Telephone', array(
                'header'    => Mage::helper('customer')->__('Telephone'),
                'width'     => '100',
                'index'     => 'billing_telephone'
            ));
        }

        if (!$remove || !in_array('billing_postcode', $remove)) {
            $this->addColumn('billing_postcode', array(
                'header'    => Mage::helper('customer')->__('ZIP'),
                'width'     => '90',
                'index'     => 'billing_postcode',
            ));
        }

        if (!$remove || !in_array('billing_country_id', $remove)) {
            $this->addColumn('billing_country_id', array(
                'header'    => Mage::helper('customer')->__('Country'),
                'width'     => '100',
                'type'      => 'country',
                'index'     => 'billing_country_id',
            ));
        }

        if (!$remove || !in_array('billing_region', $remove)) {
            $this->addColumn('billing_region', array(
                'header'    => Mage::helper('customer')->__('State/Province'),
                'width'     => '100',
                'index'     => 'billing_region',
            ));
        }

        if (!$remove || !in_array('customer_since', $remove)) {
            $this->addColumn('customer_since', array(
                'header'    => Mage::helper('customer')->__('Customer Since'),
                'type'      => 'datetime',
                'align'     => 'center',
                'index'     => 'created_at',
                'gmtoffset' => true
            ));
        }

        if (!$remove || !in_array('website_id', $remove)) {
            if (!Mage::app()->isSingleStoreMode()) {
                $this->addColumn('website_id', array(
                    'header'    => Mage::helper('customer')->__('Website'),
                    'align'     => 'center',
                    'width'     => '80px',
                    'type'      => 'options',
                    'options'   => Mage::getSingleton('adminhtml/system_store')->getWebsiteOptionHash(true),
                    'index'     => 'website_id',
                ));
            }
        }

        if (!$remove || !in_array('action', $remove)) {
            $this->addColumn('action',
                array(
                    'header'    =>  Mage::helper('customer')->__('Action'),
                    'width'     => '100',
                    'type'      => 'action',
                    'getter'    => 'getId',
                    'actions'   => array(
                        array(
                            'caption'   => Mage::helper('customer')->__('Edit'),
                            'url'       => array('base'=> '*/*/edit'),
                            'field'     => 'id'
                        )
                    ),
                    'filter'    => false,
                    'sortable'  => false,
                    'index'     => 'stores',
                    'is_system' => true,
            ));
        }

        $this->addExportType('*/*/exportCsv', Mage::helper('customer')->__('CSV'));
        $this->addExportType('*/*/exportXml', Mage::helper('customer')->__('Excel XML'));
        return Mage_Adminhtml_Block_Widget_Grid::_prepareColumns();
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.