¿Cómo puedo mostrar opciones de selección en Magento Grid?
-
16-10-2019 - |
Pregunta
He creado un módulo que está usando Admin Grid.php. He creado tres tablas para agregar y recuperar datos, pero no puedo obtener los datos de uno de mis modelos para mostrar dentro de la selección desplegable Seleccionar el archivo Grid.php.
El problema que tengo es que por alguna razón no puedo obtener los datos de la tabla para mostrar en una selección desplegable.
Consulte el código a continuación:
$this->addColumn("region", array(
"header" => Mage::helper("modulename")->__("Region"),
"type" => 'options',
'options'=> Mage::getModel('modulename/region')->getRegions()
));
Lo anterior agrega una columna de región a la cuadrícula y obtiene datos de mi modelo
Modelo/región.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;
}
Sin embargo, la siguiente columna es lo que está causando el problema
$this->addColumn('state', array(
'header' => Mage::helper('modulename')->__('State'),
'index' => 'state',
'type' => 'options',
'options'=> Mage::getModel('modulename/customerstate')->getState()
));
Parece que no puedo obtener los datos de mi modelo para mostrar dentro de las opciones.
protected function _construct(){
$this->_init("modulename/customerstate");
}
public function getStates() {
$statesArray = array();
foreach($this->getCollection() as $state){
$statesArray[$state->getId()] = $state->getState();
}
return $statesArray;
}
Tabla de DB personalizada
+-------+----------+
| s_id | state |
+-------+----------+
| 1 | pending |
| 2 | active |
+-------+----------+
No tengo idea de por qué esto está sucediendo y podría hacer algunos consejos para ayudar a resolver esto, ya que he estado dando vueltas en círculos durante horas, no recibo un error solo una opción selecta vacía en la cuadrícula ...
Solución
Gracias a @kalpesh mehta y @marius por sus contribuciones,
Resolví el error con el siguiente código como se mencionó en la publicación anterior que estaba llamando->getState()
en vez de ->getStates()
Cuadrícula.php
$this->addColumn('state', array(
'header' => Mage::helper('modulename')->__('State'),
'index' => 'state',
'type' => 'options',
'options'=> Mage::getModel('modulename/customerstate')->getStates()
));
Modelo/customerState.php
public function getStates() {
$statesArray = array();
foreach($this->getCollection() as $state){
$statesArray[$state->getId()] = $state->getState();
}
return $statesArray;
}
Otros consejos
A primera vista, costura para estar en el camino correcto.
El problema, como sugiere el error, es esto:
Mage::getSingleton('my/modulename')
Lo más probable es que esto regrese null
.
Del código que publicaste puedo concluir que My
es tu espacio de nombres y Module
es el nombre del módulo (¡duh!).
Yo este el código anterior debería ser:
Mage::getSingleton('module/[entity_name_here]');
dónde [entity_name_here]
debería ser el alias para tu region
modelo