Comment puis-je afficher les options de sélection dans la grille Magento
-
16-10-2019 - |
Question
J'ai créé un module qui utilise admin Grid.php. J'ai créé trois tables pour ajouter et récupérer des données, mais je suis incapable d'obtenir les données d'un de mes modèles pour afficher dans la liste déroulante sélectionnez le fichier de Grid.php.
Le problème est que j'ai pour une raison quelconque, je ne peux pas obtenir les données à partir sur la table pour montrer sélectionner dans une liste déroulante.
S'il vous plaît voir le code ci-dessous:
$this->addColumn("region", array(
"header" => Mage::helper("modulename")->__("Region"),
"type" => 'options',
'options'=> Mage::getModel('modulename/region')->getRegions()
));
Le ci-dessus ajoute une colonne de la région au réseau et reçoit les données de mon modèle
Modèle / 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;
}
Cependant, la colonne suivante est ce qui est l'origine du problème
$this->addColumn('state', array(
'header' => Mage::helper('modulename')->__('State'),
'index' => 'state',
'type' => 'options',
'options'=> Mage::getModel('modulename/customerstate')->getState()
));
Je ne peux pas sembler obtenir les données de mon modèle pour montrer l'intérieur des options
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 Tableau
+-------+----------+
| s_id | state |
+-------+----------+
| 1 | pending |
| 2 | active |
+-------+----------+
Je ne sais pas pourquoi cela se passe et pourrait faire avec quelques conseils pour aider à résoudre ce que je vais tourner en rond pendant des heures - je ne reçois pas une erreur juste une option de sélection vide sur la grille ...
La solution
Merci à @Kalpesh Mehta et @marius pour leurs contributions,
Je résolu l'erreur avec le code ci-dessous comme mentionné dans le précédent post, je l'appelais
->getState()
au lieu de ->getStates()
Grid.php
$this->addColumn('state', array(
'header' => Mage::helper('modulename')->__('State'),
'index' => 'state',
'type' => 'options',
'options'=> Mage::getModel('modulename/customerstate')->getStates()
));
Modèle / Customerstate.php
public function getStates() {
$statesArray = array();
foreach($this->getCollection() as $state){
$statesArray[$state->getId()] = $state->getState();
}
return $statesArray;
}
Autres conseils
Lors d'un premier coup d'œil, vous SEAM être sur la bonne voie.
Le problème, comme l'erreur l'indique, est la suivante:
Mage::getSingleton('my/modulename')
Très probablement ce rendement null
.
A partir du code affiché, je peux conclure que My
est votre espace de noms et Module
est le nom du module (duh!).
Je cela devrait être le code ci-dessus:
Mage::getSingleton('module/[entity_name_here]');
où [entity_name_here]
devrait être l'alias pour votre modèle region