Grid中的Magento getCollection()返回false

时间:2014-01-10 15:18:51

标签: php mysql magento

我目前正在学习如何使用Magento后端。我创建了一个模型类example/event和一个相应的资源。我能够将记录(通过Magento管理表单)添加到我创建的example_event数据库表中。我无法从表中检索记录。 My Gird课程如下:

class MasteringMagento_Example_Block_Adminhtml_Event_Grid extends Mage_Adminhtml_Block_Widget_Grid {

    protected function _prepareCollection() {
        $collection = Mage::getModel('example/event')->getCollection();
        var_dump($collection); // bool(false)

        //$record = Mage::getModel('example/event')->load(1); //id from example_event table
        //var_dump($record); // returns object record as expected

        $this->setCollection($collection);

        return parent::_prepareCollection();
    }

    protected function _prepareColumns() {
        $this->addColumn('name', array(
               'type'=>'text',
               'index'=>'name',
               'header'=>$this->__('Name')
        ));

        $this->addColumn('start', array(
               'type'=>'date',
               'index'=>'start',
               'header'=>$this->__('Start Date')
        ));

        $this->addColumn('end', array(
               'type'=> 'date',
               'index'=>'end',
               'header'=>$this->__('End Date')
        ));

        return $this;
    }

}

如代码中所述,$collection = Mage::getModel('example/event')->getCollection()返回false。但是我可以使用$record = Mage::getModel('example/event')->load(1);从我的数据库表中检索单个记录,其中1是记录的ID(这只是一个完整性检查,以确保至少我写的东西可以与数据库通信)。目标是将集合呈现给由_prepareColumns()函数构建的网格。

同样,我是Magento后端编程的新手,但我一遍又一遍地通过我的代码,似乎无法弄清楚为什么我的集合对象是空的。

1 个答案:

答案 0 :(得分:4)

如果可以:

$record = Mage::getModel('example/event')->load(1)

但你不能

Mage::getModel('example/event')->getCollection();

这是你did not creat collection model in your module的主要原因。 需要做这样的事情:

class MasteringMagento_Example_Model_Resource_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract {    
    protected function _construct() {
       $this->_init('example/event');
    }    
}