Saya menghadapi masalah menambahkan kolom di kisi pelanggan dan menampilkan nilai di kolom itu.
Berikut adalah kode pengamat yang saya coba tampilkan pada kolom: -
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');
}
Ini menambahkan kolom tetapi tidak ada nilai yang ditunjukkan di bawah itu.
magento-1.7
customer
grid
grid-serlization
Kuldeep
sumber
sumber
$block->getCollection()
Jawaban:
Untuk menambahkan kolom ke kisi pelanggan, Anda perlu mengganti 2 hal di blok
Mage_Adminhtml_Block_Customer_Grid
._prepareCollection
- untuk menambahkan atribut Anda dalam koleksi_prepareColumns
- untuk menambahkan kolom di kisi Anda.Untuk ini, Anda harus membuat ekstensi baru. Sebut saja
Easylife_Customer
. Untuk ini, Anda akan memerlukan file-file berikut:app/etc/module/Easylife_Customer.xml
- file deklarasiapp/code/local/Easylife/Customer/etc/config.xml
- file konfigurasiapp/code/local/Easylife/Customer/Block/Adminhtml/Customer/Grid.php
- versi Anda sendiri dari kisi pelanggan. Baca komentar saya dalam kode:Bersihkan cache dan Anda harus siap.
sumber
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
Cara Pengamat:
Nyatakan 2 pengamat dalam file config.xml Anda: satu untuk menambahkan kolom Anda ke blok kotak dan yang lainnya untuk memuat data dari atribut yang sesuai:
Buat kelas Observer dengan metode yang sesuai:
sumber
Saya membalas komentar Alex:
Untuk mengekspor dalam CSV juga gunakan
dari pada
sumber
Dengan asumsi itu
$block
adalah contoh dariMage_Adminhtml_Block_Customer_Grid
itu$block->getCollection()
harus mengembalikan koleksi pelanggan yang digunakan dalam kisi yang merupakan turunan dariMage_Customer_Model_Resource_Customer_Collection
. Ketika Anda melihat kode di dalamnyaMage_Adminhtml_Block_Customer_Grid::_prepareCollection()
Anda akan melihat bagaimana Anda bisa menambahkan atribut ke koleksi itu.Itu harus (meskipun tidak diuji)
dengan asumsi ada atribut seluler yang ditambahkan ke entitas pelanggan
atau jika ponsel dan atribut ditambahkan ke entitas alamat penagihan
sumber
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection
ini disebut:$this->getCollection()->load()
. Ini berarti bahwa modifikasi lain pada koleksi diabaikan. Tetapi, seperti yang saya katakan, ini adalah pendekatan yang sangat baik untuk mengekspor grid. Saat melakukan ekspor,load
metode ini tidak dipanggil hingga nanti.Cara lain:
Tulis ulang blok kisi pelanggan dengan modul khusus Anda dan gunakan
setCollection()
fungsi untuk mengambil atribut khusus Anda.app / code / [lokal atau komunitas] / YourCompany/YourModule/etc/config.xml
app / code / [lokal atau komunitas] / YourCompany/YourModule/Block/Customer/Grid.php
sumber
addColumnsOrder
fungsi. Silakan periksa jawaban yang diperbarui.Saya perlu menghapus beberapa kolom default dan menambahkan kolom tambahan di kisi pelanggan. Saya memutuskan untuk membuat kolom dapat dikonfigurasi. Pertama saya menambahkan 2 kotak multiselect di system.xml :
Model sumber lurus ke depan:
Model sumber kedua
Kemudian timpa kelas kisi:
sumber