Ich stehe vor dem Problem, eine Spalte im Kundenraster hinzuzufügen und Werte in dieser Spalte anzuzeigen.
Hier ist der Beobachtercode, den ich versucht habe, die Spalte anzuzeigen:
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');
}
Dies fügt die Spalte hinzu, aber es werden keine Werte darunter angezeigt.
magento-1.7
customer
grid
grid-serlization
Kuldeep
quelle
quelle
$block->getCollection()
Antworten:
Um dem Kundenraster eine Spalte hinzuzufügen, müssen Sie zwei Elemente im Block überschreiben
Mage_Adminhtml_Block_Customer_Grid
._prepareCollection
- um Ihr Attribut in die Sammlung aufzunehmen_prepareColumns
- um die Spalte in Ihr Raster einzufügen.Dazu sollten Sie eine neue Erweiterung anlegen. Nennen wir es
Easylife_Customer
. Dazu benötigen Sie folgende Dateien:app/etc/module/Easylife_Customer.xml
- die Deklarationsdateiapp/code/local/Easylife/Customer/etc/config.xml
- die Konfigurationsdateiapp/code/local/Easylife/Customer/Block/Adminhtml/Customer/Grid.php
- Ihre eigene Version des Kundenrasters. Lies meine Kommentare im Code:Leeren Sie den Cache und Sie sollten bereit sein.
quelle
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
Der Beobachter Weg:
Deklarieren Sie 2 Beobachter in Ihrer config.xml-Datei: einen zum Hinzufügen Ihrer Spalte zum Rasterblock und den anderen zum Laden von Daten aus dem entsprechenden Attribut:
Erstellen Sie eine Observer-Klasse mit geeigneten Methoden:
quelle
Ich antworte auf Alex Kommentar:
Zum Exportieren auch in CSV verwenden
anstatt
quelle
Angenommen, das
$block
ist eine Instanz vonMage_Adminhtml_Block_Customer_Grid
damals$block->getCollection()
sollte eine Kundensammlung zurückgeben, die in dem Raster verwendet wird, das eine Instanz von istMage_Customer_Model_Resource_Customer_Collection
. Wenn Sie sich den Code in ansehen, werdenMage_Adminhtml_Block_Customer_Grid::_prepareCollection()
Sie sehen, wie Sie dieser Sammlung ein Attribut hinzufügen können.Es sollte sein (obwohl nicht getestet)
Angenommen, der Kundenentität wurde ein Attribut mobile hinzugefügt
oder wenn das Mobiltelefon und ein Attribut zur Rechnungsadresseinheit hinzugefügt wurden
quelle
Mage_Adminhtml_Block_Widget_Grid::_prepareCollection
dieses genannt wird:$this->getCollection()->load()
. Dies bedeutet, dass alle anderen Änderungen an der Sammlung ignoriert werden. Aber wie gesagt, dies ist ein sehr guter Ansatz für den Export eines Rasters. Beim Export wird dieload
Methode erst viel später aufgerufen.Ein anderer Weg:
Schreiben Sie den Kundenrasterblock mit Ihrem benutzerdefinierten Modul neu und verwenden Sie die
setCollection()
Funktion, um Ihr benutzerdefiniertes Attribut abzurufen.app / code / [local or community] /IhreFirma/IhrModul/etc/config.xml
app / code / [local or community] /IhreFirma/IhrModul/Block/Customer/Grid.php
quelle
addColumnsOrder
Funktion ordnen . Bitte überprüfen Sie die aktualisierte Antwort.Ich musste einige Standardspalten entfernen und zusätzliche Spalten im Kundenraster hinzufügen. Ich habe beschlossen, die Spalten konfigurierbar zu machen. Zuerst habe ich 2 Mehrfachauswahlfelder in system.xml hinzugefügt :
Die Quellmodelle sind einfach:
Das zweite Quellmodell
Überschreiben Sie dann die Grid-Klasse:
quelle