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 ...

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top