Magento管理网格不显示标题标题,并且添加按钮存在

时间:2015-11-17 06:02:22

标签: php xml magento

感谢@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));
}
}

问题:

  1. 仅显示网格标题和添加按钮

  2. 点击添加按钮后,会显示表单,但我无法添加新项目

  3. 模型集合返回&#34; bool(false)&#34;在var dump

  4. 之后

    问题:

    你能帮我发现问题吗?

    由于

2 个答案:

答案 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,但这就是我们解决问题的方法。