Mage :: getModel返回false

时间:2013-07-11 08:36:06

标签: magento

我正试图掌握在magento中调用和使用模型。

我目前的任务是通过从控制器调用来显示模型中保存的字符串。

当尝试调用SimpleOutput.php时,我收到一条错误消息,指出已调用非对象。我有var_dumped它,你会看到它返回false。

我查看了我的代码,并且由于我对Magento需要做的事情的理解有限,我认为一切都是正确的。显然我错过了一些东西。有人可以看看,如果它是一个错字告诉在哪里看,如果它不仅仅是一个简单的拼写错误解释我错过了什么,我应该做什么以及为什么?

我的代码在

下面

TS / Firstmodule的/ etc / config.xml中

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
    <Ts_Firstmodule>
        <version>0.1.0</version>
    </Ts_Firstmodule>
</modules>

<models>
    <firstmodule>
        <class>Ts_Firstmodule_Model</class>
    </firstmodule>
</models>

<frontend>
    <routers>
        <firstmodule>
            <use>standard</use>
            <args>
                <module>Ts_Firstmodule</module>
                <frontName>firstmodule</frontName>
            </args>
        </firstmodule>
    </routers>
</frontend>
</config>

TS / Firstmodule /控制器/ indexController.php

class Ts_Firstmodule_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
    $simple = Mage::getModel('ts_firstmodule/simpleoutput');
    var_dump($simple);
}
}

TS / Firstmodule /模型/ simpleoutput.php

class Ts_Firstmodule_Model_SimpleOutput extends Mage_Core_Model_Abstract
{
public function basicText()
{
    echo 'this is some text from the simple output model inside the basic text function';
}
}

3 个答案:

答案 0 :(得分:0)

总是如此:

Mage::getModel('ts_firstmodule/simpleoutput');

当你执行getModel / getBlock / helper / etc

参数字符串的第一部分是config.xml中定义的图层的XML节点 第二部分是图层文件夹容器中文件的完整路径。

所以,在你的情况下:Mage :: getModel('firstmodule / simpleoutput');应加载Ts/Firstmodule/Model/Simpleoutput.php

注意:请注意资源的情况(看看标准的magento是否有良好做法)!

答案 1 :(得分:0)

您必须将<models>包裹在<global>中,就像这样:

<global>
    <models>
        <firstmodule>
            <class>Ts_Firstmodule_Model</class>
        </firstmodule>
    </models>
</global>

不要犹豫,看看更简单的核心模块的来源(例如GoogleAnalytics),看看他们是如何完成的,并了解其背后的逻辑。

答案 2 :(得分:0)

您应该修改config.xml文件并在<global>标记周围添加<models>标记:

<global>
    <models>
        <firstmodule>
            <class>Ts_Firstmodule_Model</class>
        </firstmodule>
    </models>
<global>

在此之后,为了实例化模型,请使用它:

Mage::getModel('firstmodule/simpleoutput')

getModel方法的第一部分(直到/)应该是您在<models>标记下的config.xml中设置的标记名称。在您的情况下firstmodule