我目前正在学习如何使用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后端编程的新手,但我一遍又一遍地通过我的代码,似乎无法弄清楚为什么我的集合对象是空的。
答案 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');
}
}