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

Était-ce utile?

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]');

[entity_name_here] devrait être l'alias pour votre modèle region

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top