Я сталкиваюсь с проблемой добавления столбца в сетку клиента и отображения значений в этом столбце.
Вот код наблюдателя, который я пытался показать в столбце:
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');
}
Это добавляет столбец, но значения не отображаются под этим.
magento-1.7
customer
grid
grid-serlization
Kuldeep
источник
источник
$block->getCollection()
Ответы:
Чтобы добавить столбец в сетку клиента, необходимо переопределить 2 вещи в блоке
Mage_Adminhtml_Block_Customer_Grid
._prepareCollection
- добавить свой атрибут в коллекцию_prepareColumns
- добавить столбец в вашей сетке.Для этого вы должны создать новое расширение. Давайте назовем это
Easylife_Customer
. Для этого вам понадобятся следующие файлы:app/etc/module/Easylife_Customer.xml
- файл декларацииapp/code/local/Easylife/Customer/etc/config.xml
- файл конфигурацииapp/code/local/Easylife/Customer/Block/Adminhtml/Customer/Grid.php
- Ваша собственная версия сетки клиента. Прочитайте мои комментарии в коде:Очистите кеш, и вы должны быть готовы.
источник
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
Путь наблюдателей:
Объявите 2 наблюдателя в вашем файле config.xml: один для добавления вашего столбца в блок сетки, а другой для загрузки данных из соответствующего атрибута:
Создайте класс Observer с соответствующими методами:
источник
Я отвечаю на комментарий Алекса:
Для экспорта в CSV тоже используйте
вместо того
источник
Если предположить , что
$block
это экземплярMage_Adminhtml_Block_Customer_Grid
затем$block->getCollection()
должен вернуть коллекцию клиентов, используемую в сетке, которая является экземпляромMage_Customer_Model_Resource_Customer_Collection
. Когда вы посмотрите на код,Mage_Adminhtml_Block_Customer_Grid::_prepareCollection()
вы увидите, как вы можете добавить атрибут в эту коллекцию.Должно быть (хотя и не проверено)
при условии, что к объекту клиента добавлен атрибут mobile
или если мобильный телефон и атрибут добавлены к объекту адреса выставления счета
источник
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection
это называется:$this->getCollection()->load()
. Это означает, что любая другая модификация коллекции игнорируется. Но, как я уже сказал, это очень хороший подход для экспорта сетки. При выполнении экспортаload
метод вызывается не намного позже.По-другому:
Перепишите блок сетки клиента с вашим пользовательским модулем и используйте
setCollection()
функцию для получения вашего пользовательского атрибута.app / code / [local or community] /YourCompany/YourModule/etc/config.xml
app / code / [local or community] /YourCompany/YourModule/Block/Customer/Grid.php
источник
addColumnsOrder
функции. Пожалуйста, проверьте обновленный ответ.Мне нужно было удалить некоторые столбцы по умолчанию и добавить дополнительные столбцы в сетке клиента. Я решил сделать столбцы настраиваемыми. Сначала я добавил 2 поля множественного выбора в system.xml :
Исходные модели просты:
Вторая исходная модель
Затем переопределите класс сетки:
источник