感谢@PHP Weblineindia分享本教程的链接http://navaneeth.me/creating-magento-extension-with-custom-database-table/#comment-8147。
我几乎遵循了本教程给出的每一个细节,但是我无法显示表格。
更新:调试后我的模型集合出现问题
另一个更新:我更新所有资源模型和集合并将它们扩展到此
Mage_Core_Model_Resource_Db_Abstract - >资源模型
Mage_Core_Model_Resource_Db_Collection_Abstract - >收集模型
好消息是。 我现在可以向数据库添加新数据。
但主要问题仍然相同,没有显示网格。
我在magento前端尝试过简单的数据检索,但它给了我致命错误:在非对象上调用成员函数load()。
我还是magento的新手,我需要发现很多谜团。
MODEL
应用程序/代码/本地/ RTS / Pmadmin /型号/ Pmadmin.php
class Rts_Pmadmin_Model_Pmadmin extends Mage_Core_Model_Abstract {
protected function _construct()
{
$this->_init('pmadmin/pricematrix');
}
}
应用程序/代码/本地/ RTS / Pmadmin /型号/ Mysql4 /资源/ Pmadmin.php
class Rts_Pmadmin_Model_Mysql4_Resource_Pmadmin extends Mage_Core_Model_Resource_Db_Abstract {
protected function _construct()
{
$this->_init('pmadmin/pmadmin', 'pmadmin_id');
}
}
应用程序/代码/本地/ RTS / Pmadmin /型号/ Mysql4 /资源/ Collection.php
class Rts_Pmadmin_Model_Mysql4_Resource_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract {
public function _construct()
{
parent::_construct();
$this->_init('pmadmin/pmadmin');
}
}
这些是代码。
UPDATED config.xml
<global>
<helpers>
<pmadmin>
<class>Rts_Pmadmin_Helper</class>
</pmadmin>
</helpers>
<blocks>
<pmadmin>
<class>Rts_Pmadmin_Block</class>
</pmadmin>
</blocks>
<models>
<pmadmin>
<class>Rts_Pmadmin_Model</class>
<resourceModel>pmadmin_resource</resourceModel>
</pmadmin>
<pmadmin_resource>
<class>Rts_Pmadmin_Model_Resource</class>
<entities>
<pmadmin>
<table>pmadmin</table>
</pmadmin>
</entities>
</pmadmin_resource>
</models>
<resources>
<pmadmin_setup>
<setup>
<module>Rts_Pmadmin</module>
<class>Rts_Pmadmin_Model_Mysql4_Resource_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</pmadmin_setup>
<pmadmin_write>
<connection>
<use>core_write</use>
</connection>
</pmadmin_write>
<pmadmin_read>
<connection>
<use>core_read</use>
</connection>
</pmadmin_read>
</resources>
</global>
更新:内容块
class Rts_Pmadmin_Block_Adminhtml_Pmadmin_Grid extends Mage_Adminhtml_Block_Widget_Grid {
public function __construct() {
parent::__construct();
$this->setId('pmadmingrid');
$this->setDefaultSort('pmadmin_id');
$this->setDefaultDir('ASC');
$this->setSaveParametersInSession(true);
$this->setUseAjax(true);
}
protected function _prepareCollection() {
$collection = Mage::getModel('pmadmin/pmadmin')->getCollection();
// print_r($collection); exit();
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _prepareColumns() {
$this->addColumn('pricematrix_id', array(
'header' => Mage::helper('pmadmin')->__('ID'),
'align' => 'right',
'width' => '10px',
'index' => 'pricematrix_id',
));
$this->addColumn('title', array(
'header' => Mage::helper('pmadmin')->__('Title'),
'align' => 'left',
'index' => 'title',
'width' => '50px',
));
$this->addColumn('short_description', array(
'header' => Mage::helper('pmadmin')->__('Description'),
'width' => '150px',
'index' => 'short_description',
));
$this->addColumn('file_path', array(
'header' => Mage::helper('pmadmin')->__('File Path'),
'width' => '150px',
'index' => 'file_path',
));
$this->addColumn('customer_group', array(
'header' => Mage::helper('pmadmin')->__('Customer Group'),
'width' => '150px',
'index' => 'customer_group',
));
$this->addColumn('creation_time', array(
'header' => Mage::helper('pmadmin')->__('Posted On'),
'width' => '150px',
'index' => 'creation_time',
));
return parent::_prepareColumns();
}
public function getRowUrl($row) {
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
}
public function getGridUrl()
{
return $this->getUrl('*/*/grid', array('_current'=>true));
}
}
问题:
仅显示网格标题和添加按钮
点击添加按钮后,会显示表单,但我无法添加新项目
模型集合返回&#34; bool(false)&#34;在var dump
问题:
你能帮我发现问题吗?
由于
答案 0 :(得分:2)
我的旧magento版本曾经遇到过这个问题,这似乎也是你的情况,因为这个集合是假的:
您必须在类名中添加Mysql4。 配置:
<pmadmin_resource>
<class>Rts_Pmadmin_Model_Mysql4_Resource</class>
<entities>
<pmadmin>
<table>pmadmin</table>
</pmadmin>
</entities>
</pmadmin_resource>
型号:
Rts_Pmadmin_Model_Mysql4_Resource_Pricematrix_Collection
Rts_Pmadmin_Model_Mysql4_Resource_Pricematrix
答案 1 :(得分:2)
您的模型文件夹结构存在问题。我不是magento的专家,但我认为你将资源模型和集合模型分成不同的文件夹。
根据@Nicolas D的回答,我在magento 1.9.1上也遇到了这个问题。我花了几天时间才找到解决方案。
是的,@ Nicolas D是对的,你必须把你的资源文件夹放在Mysql4文件夹上。但是,在Mysql4文件夹下,您必须创建一个与模块名称相同的文件夹并放置Collection.php模型。
例如:
而不是
Rts_Pmadmin_Model_Mysql4_Resource
成功
Rts_Pmadmin_Model_Mysql4_Pmadmin
另外!不要忘记更新config.xml和与您的更改相关的其他文件。
<models>
<pmadmin>
<class>Rts_Pmadmin_Model</class>
<resourceModel>pmadmin_resource</resourceModel>
</pmadmin>
<pmadmin_resource>
<class>Rts_Pmadmin_Model_Mysql4</class>
<entities>
<pmadmin>
<table>pmadmin</table>
</pmadmin>
</entities>
</pmadmin_resource>
</models>
<resources>
<pmadmin_setup>
<setup>
<module>Rts_Pmadmin</module>
<class>Rts_Pmadmin_Model_Mysql4_Pmadmin_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</pmadmin_setup>
<pmadmin_write>
<connection>
<use>core_write</use>
</connection>
</pmadmin_write>
<pmadmin_read>
<connection>
<use>core_read</use>
</connection>
</pmadmin_read>
</resources>
我不知道这是否是一个magento bug,但这就是我们解决问题的方法。