2014-01-10 57 views
0

我目前正在學習如何使用Magento後端。我創建了一個模型類example/event和一個相應的資源。我能夠將記錄(通過Magento管理員表單)添加到我創建的example_event的數據庫表中。不過,我無法從桌子上檢索記錄。我的網格類如下:網格中的Magento getCollection()返回false

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

所以,你可以加載(1),但你不能加載所有的集合? – sergio

+0

首先,檢查'var/log'文件夾的錯誤。然後,確保該文件存在:'MasteringMagento/Example/Model/Resource/Event/Collection.php'。如果確實如此,那麼在該問題中發佈該文件的內容以及config.xml和'MasteringMagento/Example/Model/Event.php'的內容。 – Marius

+0

@sergio,這是正確的。 – bar1024

回答

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'); 
    }  
} 
+0

和@marius謝謝,謝謝!就是這樣。在MasteringMagento/Example/Model/Resource/Event/Collection.php中需要'class MasteringMagento_Example_Model_Resource_Event_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract'。我現在更瞭解如何使用Magento中的模型。令人驚訝的是我正在使用的教程沒有提及Collection摘要。可能需要一個新的教程。 – bar1024

+0

它可以幫助你 – sergio