Ich habe viel gegoogelt, probiert und geirrt, aber ich kann keine Lösung für das Problem finden.
- Die Möglichkeit, die Felder und die Reihenfolge von sales_order_grid zu ändern. und
- Die Möglichkeit, zwei benutzerdefinierte Felder in diesem Raster anzuzeigen (filterbar).
Ersteres (Punkt 1) wurde gelöst, indem das Mage_Adminhtml_Block_Widget_Grid
Modul in meinem benutzerdefinierten Modul erweitert wurde (ich weiß über Beobachter Bescheid, aber andere installierte Module haben meine Änderungen mit ihren Beobachtern überschrieben).
Unabhängig davon, letzteres ist mein aktuelles Problem, im Folgenden sind die beiden Methoden aufgeführt, die mich bisher gescheitert sind.
Methode 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();
Methode 2
Zu diesem Zeitpunkt hatte ich es satt, die gleichen 7 Artikel zu lesen, die mir nicht weitergeholfen haben, und versuchte, EIN Feld zum Laufen zu bringen. Ich habe auch die Fehlerprotokolle in Magento überprüft und festgestellt, dass "$ this-> getTable ()" fehlerhaft war. Daher habe ich es entfernt.
<?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();
Was wirft die Frage auf, was ist der Unterschied zwischen einer Spalte und einem Attribut? Meine ursprüngliche Annahme war, dass eine Spalte zu einer vorhandenen Kerntabelle hinzugefügt wird, während ein Attribut zu den EAV_ * -Tabellen hinzugefügt und entsprechend verknüpft wird.