Saya telah melakukan banyak pencarian, percobaan dan kesalahan, tetapi saya tidak dapat menemukan solusi untuk masalah ini.
- Kemampuan untuk mengubah bidang dan urutan sales_order_grid; dan
- Kemampuan untuk menampilkan dua bidang khusus pada kisi ini (dapat difilter).
Yang pertama (poin 1) telah dipecahkan, dengan memperluas Mage_Adminhtml_Block_Widget_Grid
modul kustom saya (saya tahu tentang pengamat, namun modul yang diinstal lainnya mengesampingkan perubahan saya dengan pengamat mereka).
Apapun, yang terakhir adalah masalah saya saat ini, di bawah ini adalah dua metode yang telah gagal saya sejauh ini.
Metode 1
<?php
/* @var $this Mage_Sales_Model_Mysql4_Setup */
$this->startSetup();
$connection = $this->getConnection();
/**
* Create the payment method dropdown field, because this field _may_ be
* used for searching we will create an index for it.
*/
$connection->addColumn(
$this->getTable('sales/order_grid'),
'x_payment_method',
"ENUM('PayPal', 'SagePay') DEFAULT NULL"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_payment_type', 'x_payment_type');
/**
* Create the order channel field to identify where the order was originally
* generated from. Also add an index for this field for additional filtering.
*/
$connection->addColumn(
$this->getTable('sales/order_grid'),
'x_sale_channel',
"ENUM('Amazon', 'Play', 'eBay', 'Website') NOT NULL DEFAULT 'Website'"
);
$connection->addKey($this->getTable('sales/order_grid'), 'x_sale_channel','x_sale_channel');
$this->endSetup();
Metode 2
Pada titik ini saya sudah lelah membaca 7 artikel yang sama yang tidak membantu, jadi saya mencoba membuat SATU bidang berfungsi; Saya juga memeriksa log kesalahan di Magento dan menemukan "$ this-> getTable ()" salah, jadi saya menghapusnya.
<?php
/* @var $this Mage_Sales_Model_Mysql4_Setup */
$this->startSetup();
$connection = $this->getConnection();
/**
* Create the payment method dropdown field, because this field _may_ be
* used for searching we will create an index for it.
*/
$this->addAttribute('sales_flat_order', 'x_test_option', array(
'label' => 'X Test Option',
'type' => 'varchar',
'input' => 'select',
'visible' => true,
'required' => false,
'position' => 1,
'visible_on_front' => false,
'option' => array('value' => array('web', 'test 1', 'test 2')),
'default' => array('web'),
));
$this->endSetup();
Yang membuat orang bertanya, apa perbedaan antara kolom dan atribut? Asumsi awal saya adalah bahwa, kolom ditambahkan ke tabel inti yang ada sementara atribut ditambahkan ke tabel EAV_ * dan terkait dengan tepat.