Me enfrento al problema de agregar una columna en la cuadrícula del cliente y mostrar valores en esa columna.
Aquí está el código de observador que he estado tratando de mostrar la columna:
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');
}
Esto agrega la columna pero no se muestran valores debajo de eso.
magento-1.7
customer
grid
grid-serlization
Kuldeep
fuente
fuente

$block->getCollection()Respuestas:
Para agregar una columna a la cuadrícula del cliente, debe anular 2 elementos en el bloque
Mage_Adminhtml_Block_Customer_Grid._prepareCollection- para agregar su atributo en la colección_prepareColumns- para agregar la columna en su cuadrícula.Para esto, debe crear una nueva extensión. Digamos que es
Easylife_Customer. Para esto necesitará los siguientes archivos:app/etc/module/Easylife_Customer.xml- el archivo de declaraciónapp/code/local/Easylife/Customer/etc/config.xml- el archivo de configuraciónapp/code/local/Easylife/Customer/Block/Adminhtml/Customer/Grid.php- su propia versión de la red de clientes. Lee mis comentarios en el código:Borra el caché y deberías estar listo.
fuente
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();El camino de los observadores:
Declare 2 observadores en su archivo config.xml: uno para agregar su columna al bloque de cuadrícula y el otro para cargar datos del atributo correspondiente:
Cree una clase de observador con los métodos adecuados:
fuente
Respondo al comentario de Alex:
Para exportar en CSV también use
en lugar de
fuente
Asumiendo que
$blockes una instancia deMage_Adminhtml_Block_Customer_Gridentonces$block->getCollection()debería devolver una colección de clientes utilizada en la cuadrícula que es una instancia deMage_Customer_Model_Resource_Customer_Collection. Cuando mires el códigoMage_Adminhtml_Block_Customer_Grid::_prepareCollection(), verás cómo puedes agregar un atributo a esa colección.Debería ser (aunque no probado)
suponiendo que hay un atributo móvil agregado a la entidad del cliente
o si el móvil es un atributo agregado a la entidad de dirección de facturación
fuente
Mage_Adminhtml_Block_Widget_Grid::_prepareCollectioneste se llama:$this->getCollection()->load(). Esto significa que se ignora cualquier otra modificación de la colección. Pero, como dije, este es un muy buen enfoque para exportar una grilla. Al realizar una exportaciónload, no se llama al método hasta mucho más tarde.De otra manera:
Vuelva a escribir el bloque de cuadrícula del cliente con su módulo personalizado y use la
setCollection()función para obtener su atributo personalizado.app / code / [local o comunidad] /YourCompany/YourModule/etc/config.xml
aplicación / código / [local o comunidad] /YourCompany/YourModule/Block/Customer/Grid.php
fuente
addColumnsOrderfunción. Por favor verifique la respuesta actualizada.Necesitaba eliminar algunas columnas predeterminadas y agregar columnas adicionales en la cuadrícula del cliente. Decidí hacer las columnas configurables. Primero agregué 2 cuadros de selección múltiple en system.xml :
Los modelos fuente son sencillos:
El segundo modelo fuente
Luego anule la clase de cuadrícula:
fuente