在Magento的Grid Customers中添加列

时间:2014-08-19 18:44:44

标签: magento grid

我需要在magento的客户的网格视图中创建一个包含客户生日日期的列。我无法使它发挥作用。

enter image description here

Grid.php:

<?php

class Mage_Adminhtml_Block_Customer_Grid extends Mage_Adminhtml_Block_Widget_Grid
{

    public function __construct()
    {
        parent::__construct();
        $this->setId('customerGrid');
        $this->setUseAjax(true);
        $this->setDefaultSort('entity_id');
        $this->setSaveParametersInSession(true);
    }

    protected function _prepareCollection()
    {
        $collection = Mage::getResourceModel('customer/customer_collection')
                ->addNameToSelect()
                ->addAttributeToSelect('email')
                ->addAttributeToSelect('created_at')
                ->addAttributeToSelect('dob')
                ->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');


        $this->setCollection($collection);

        return parent::_prepareCollection();
    }

    protected function _prepareColumns()
    {

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

        $this->addColumn('dob', array(
            'header' => Mage::helper('customer')->__('Date of Birth'),
            'type' => 'datetime',
            'index' => 'dob'
        ));

        /* $this->addColumn('firstname', array(
          'header'    => Mage::helper('customer')->__('First Name'),
          'index'     => 'firstname'
          ));
          $this->addColumn('lastname', array(
          'header'    => Mage::helper('customer')->__('Last Name'),
          'index'     => 'lastname'
          )); */

        $this->addColumn('name', array(
            'header' => Mage::helper('customer')->__('Name'),
            'index' => 'name'
        ));
        $this->addColumn('email', array(
            'header' => Mage::helper('customer')->__('Email'),
            'width' => '150',
            'index' => 'email'
        ));

        $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,
        ));

        $this->addColumn('Telephone', array(
            'header' => Mage::helper('customer')->__('Telephone'),
            'width' => '100',
            'index' => 'billing_telephone'
        ));

        $this->addColumn('billing_postcode', array(
            'header' => Mage::helper('customer')->__('ZIP'),
            'width' => '90',
            'index' => 'billing_postcode',
        ));

        $this->addColumn('billing_country_id', array(
            'header' => Mage::helper('customer')->__('Country'),
            'width' => '100',
            'type' => 'country',
            'index' => 'billing_country_id',
        ));

        $this->addColumn('billing_region', array(
            'header' => Mage::helper('customer')->__('State/Province'),
            'width' => '100',
            'index' => 'billing_region',
        ));

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

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

        $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 XMLs'));
        return parent::_prepareColumns();
    }

    protected function _prepareMassaction()
    {
        $this->setMassactionIdField('entity_id');
        $this->getMassactionBlock()->setFormFieldName('customer');

        $this->getMassactionBlock()->addItem('delete', array(
            'label' => Mage::helper('customer')->__('Delete'),
            'url' => $this->getUrl('*/*/massDelete'),
            'confirm' => Mage::helper('customer')->__('Are you sure?')
        ));

        $this->getMassactionBlock()->addItem('newsletter_subscribe', array(
            'label' => Mage::helper('customer')->__('Subscribe to Newsletter'),
            'url' => $this->getUrl('*/*/massSubscribe')
        ));

        $this->getMassactionBlock()->addItem('newsletter_unsubscribe', array(
            'label' => Mage::helper('customer')->__('Unsubscribe from Newsletter'),
            'url' => $this->getUrl('*/*/massUnsubscribe')
        ));

        $groups = $this->helper('customer')->getGroups()->toOptionArray();

        array_unshift($groups, array('label' => '', 'value' => ''));
        $this->getMassactionBlock()->addItem('assign_group', array(
            'label' => Mage::helper('customer')->__('Assign a Customer Group'),
            'url' => $this->getUrl('*/*/massAssignGroup'),
            'additional' => array(
                'visibility' => array(
                    'name' => 'group',
                    'type' => 'select',
                    'class' => 'required-entry',
                    'label' => Mage::helper('customer')->__('Group'),
                    'values' => $groups
                )
            )
        ));

        return $this;
    }

    public function getGridUrl()
    {
        return $this->getUrl('*/*/grid', array('_current' => true));
    }

    public function getRowUrl($row)
    {
        return $this->getUrl('*/*/edit', array('id' => $row->getId()));
    }

}

1 个答案:

答案 0 :(得分:0)

config.xml代码存在问题

<?xml version="1.0" encoding="utf-8"?>
<config>
     <global> 
        <blocks>
             <adminhtml> <!-- used  adminhtml instead of my_block -->
                 <rewrite>
                    <customer_grid>Company_Module_Block_Customer_Grid</customer_grid>
                 <!---  extra _ in  Module__Block  -->
                </rewrite> 
             </adminhtml> 
        </blocks> 
    </global> 
</config> 

复制Grid.php 来自

app/code/core/Mage/Adminhtml/Block/Customer/

app/code/local/Mage/Adminhtml/Block/Customer/

然后 app / code / local / Mage / Adminhtml / Block / Customer / Grid.php 或者在Company_Module__Block_Customer_Grid类中的遵循以下流程:

转到功能:_prepareCollection()

之后添加了->addAttributeToSelect('dob')
->addAttributeToSelect('created_at')

然后转到prepareColumns函数添加此代码

$this->addColumn('dob', array(
     'header'    => Mage::helper('customer')->__('Date of Birth'),
     'type'      => 'datetime',  
     'index'     => 'dob',
));

你可以datetime to date according给你明智的