Wie kann ich ausgewählte Optionen im Magento-Raster anzeigen?
-
16-10-2019 - |
Frage
Ich habe ein Modul erstellt, das admin Grid.php verwendet.Ich habe drei Tabellen zum Hinzufügen und Abrufen von Daten erstellt, kann die Daten von einem meiner Modelle jedoch nicht in der Dropdown-Auswahl der Grid.php-Datei anzeigen.
Das Problem, das ich habe, ist, dass ich aus irgendeinem Grund die Daten aus der Tabelle nicht abrufen kann, um sie in einer Dropdown-Auswahl anzuzeigen.
Bitte sehen Sie sich den folgenden Code an:
$this->addColumn("region", array(
"header" => Mage::helper("modulename")->__("Region"),
"type" => 'options',
'options'=> Mage::getModel('modulename/region')->getRegions()
));
Das Obige fügt dem Raster eine Regionsspalte hinzu und ruft Daten von meinem Modell ab
Modell/Region.php
protected function _construct(){
$this->_init("modulename/region");
}
public function getRegions() {
$regionsArray = array();
foreach($this->getCollection() as $region){
$regionsArray[$region->getId()] = $region->getTitle();
}
return $regionsArray;
}
Die folgende Spalte ist jedoch die Ursache des Problems
$this->addColumn('state', array(
'header' => Mage::helper('modulename')->__('State'),
'index' => 'state',
'type' => 'options',
'options'=> Mage::getModel('modulename/customerstate')->getState()
));
Es scheint mir nicht möglich zu sein, die Daten meines Modells in den Optionen anzuzeigen
protected function _construct(){
$this->_init("modulename/customerstate");
}
public function getStates() {
$statesArray = array();
foreach($this->getCollection() as $state){
$statesArray[$state->getId()] = $state->getState();
}
return $statesArray;
}
Customerstate-DB-Tabelle
+-------+----------+
| s_id | state |
+-------+----------+
| 1 | pending |
| 2 | active |
+-------+----------+
Ich habe keine Ahnung, warum das passiert, und könnte einen Rat gebrauchen, um das Problem zu lösen, da ich mich stundenlang im Kreis gedreht habe – ich erhalte keine Fehlermeldung, sondern nur eine leere Auswahloption im Raster ...
Lösung
Vielen Dank an @kalpesh Mehta und @Marius für ihre Beiträge,
Ich habe den Fehler mit dem folgenden Code gelöst, wie in dem früheren Beitrag, den ich anrief, erwähnt->getState()
Anstatt von ->getStates()
Grid.php
$this->addColumn('state', array(
'header' => Mage::helper('modulename')->__('State'),
'index' => 'state',
'type' => 'options',
'options'=> Mage::getModel('modulename/customerstate')->getStates()
));
Modell/CustomerState.php
public function getStates() {
$statesArray = array();
foreach($this->getCollection() as $state){
$statesArray[$state->getId()] = $state->getState();
}
return $statesArray;
}
Andere Tipps
Auf den ersten Blick scheinen Sie auf dem richtigen Weg zu sein.
Das Problem ist, wie der Fehler vermuten lässt, folgendes:
Mage::getSingleton('my/modulename')
Höchstwahrscheinlich kehrt dies zurück null
.
Aus dem Code, den Sie gepostet haben, kann ich das schließen My
ist Ihr Namespace und Module
ist der Modulname (Duh!).
Ich denke, der obige Code sollte lauten:
Mage::getSingleton('module/[entity_name_here]');
Wo [entity_name_here]
sollte der Alias für Sie sein region
Modell