1

我正在尝试为 magento 创建一个简单的模块。我已经创建了我的控制器和路由,但由于某种原因我无法访问我的模型。据我所知,它甚至没有加载。

我没有收到错误消息,并且没有创建模型对象。

这可能是什么原因造成的?

这里有一些信息:

控制器:

class MyVendor_MyModule_IndexController extends Mage_Core_Controller_Front_Action
{

    public function pingAction(){

        $model = Mage::getModel('mymodule/mymodule');       
        echo "<pre>" . print_r($model->load(1),true);

    }
}

模型树视图:

MyVendor
-MyModule
-- controllers
---- IndexController.php
-- Model
---- Mysql4
-------- MyModule.php
-------- MyModule
---------------- Collection.php
---- MyModule.php
-- etc
---- config.xml

配置文件

<?xml version="1.0" encoding="UTF-8"?>

<config> 
    <modules>
        <MyVendor_MyModule>
            <version>0.0.1</version>
        </MyVendor_MyModule>
    </modules>
    <frontend>
        <routers>
            <mymodule>
                <use>standard</use>
                <args>
                    <module>MyVendor_MyModule</module>
                    <frontName>mymodule</frontName>
                </args>
            </mymodule>
        </routers>   
    </frontend>
    <global>
        <models>
            <mymodule>
                <class>MyVendor_MyModule_Model</class>
                <resourceModel>mymodule_mysql4</resourceModel>
            </mymodule>
            <mymodule_mysql4>
                <class>MyVendor_MyModule_Model_Mysql4</class>
                <entities>
                    <mymodule>
                        <table>mymodule_table</table>
                    </mymodule>
                </entities>
            </mymodule_mysql4>
        </models>
        <resources>
                    <mymodule_setup>
                        <setup>
                                <module>MyVendor_MyModule</module>
                        </setup>
                        <connection>
                                <use>core_setup</use>
                        </connection>
                    </mymodule_setup>
                    <mymodule_setup>
                        <connection>
                                <use>core_write</use>
                        </connection>
                    </mymodule_setup>
                    <mymodule_setup>
                        <connection>
                                <use>core_read</use>
                        </connection>
                    </mymodule_setup>
            </resources>
    </global>
</config>

在我的模型中,我有一个简单的:

class MyVendor_MyModule_Model_Mysql4_MyModule extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {   
        $this->_init('mymodule/mymodule', 'id');
    }
}
4

2 回答 2

5

取决于平台,Mage::getModel('mymodule/mymodule');在查找要加载的文件时可能区分大小写(即应该Mage::getModel('myModule/myModule');给它您的文件夹结构和命名)

检查 get_class(Mage::getModel('mymodule/mymodule')) 返回什么。它是您班级的班级名称吗?如果不是,那么您甚至都没有创建对象的实例。之前检查骆驼外壳,您实际上有一个文件 /MyVendor/MyModule/Model/MyModule.php (您没有包含其中的代码)。

如果你有你的类的一个实例,你可能在数据库中没有任何行来支持它。所以 ->load(1); 不会做任何事情。

于 2013-03-12T02:02:53.923 回答
0

您是否添加了 app/etc/modules/MyVendor_MyModule.xml 并且您确定没有错字错误。如果您在管理员中找到您的模块,则确认您的模块已注册。

您正在扩展一个控制器。那么做了什么来覆盖核心控制器。

于 2013-03-12T04:00:54.587 回答