0

我在加载处理带有模块的数据库的第二个模型时遇到问题。
我有 1 个控制器ValidateController和 2 个Main扩展的模型,Mage_Core_Controller_Front_Action因此我无法与数据库通信,并且Log与数据库通信。

当我调用$log = Mage::getModel('modulex/log');它时它为我提供了正确的路径,get_class($log)但是当我调用它时$log->load($params['id']);它失败给我这个错误:

Warning: include(Companyx/Modulex/Model/Resource/Main.php) [function.include]: failed to open stream: No such file or directory

我不明白为什么它会给我这个错误,它应该称之为Resource/Log.php存在。

我给你看我的 config.xml

<frontend>
    <routers>
        <modulex>
            <use>standard</use>
            <args>
                <module>Companyx_Modulex</module>
                <frontName>modulex</frontName>
            </args>
        </modulex>
    </routers>
</frontend>
<global>
    <models>
        <modulex>
            <class>Companyx_Modulex_Model</class>
            <resourceModel>modulex_resource</resourceModel>
        </modulex>
        <modulex_resource>
            <class>Companyx_Modulex_Model_Resource</class>
            <entities>
                    <log>
                            <table>companyx_modulex_logs</table>
                    </log>
            </entities>
        </modulex_resource>
    </models>
</global>

感谢您的帮助 !

==== 编辑解决方案 ====使用此代码
创建/resource/Main.php

class Companyx_Modulex_Model_Resource_Main extends Mage_Core_Model_Resource_Db_Abstract
{
    protected function _construct()
    {
        $this->_init('modulex/log', 'id');
    }
}

我的错误是在做$this->_init('modulex/main', 'id');.

4

1 回答 1

0

您收到的错误消息我相当清楚,找不到资源模型。Magento 将模型拆分为本质上是一个 2 层系统。一层用于处理业务逻辑,另一层用于处理持久性/数据库交互。当您在模型上调用 load 时,它被代理到为您的类指定的资源模型。在您的配置中,此资源被设置为Companyx_Modulex_Model_Resource_Main.php,但您似乎在应该定义类的位置没有文件 - app/code/{codepool}/Companyx/Modulex/Model/Resource/Main.php

于 2012-10-05T14:12:29.073 回答