法师:: getModel被返回false(Mage::getModel is returning

2019-10-18 09:16发布

我试图去抓住与呼叫和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';
}
}

Answer 1:

你必须包装<models><global> ,就像这样:

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

不要犹豫,看看简单的核心模块的源(例如, GoogleAnalytics ),看看他们是怎么做的,了解它背后的逻辑。



Answer 2:

像往常一样 :

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

当你做一个getModel / getBlock /帮手/等

参数串的第一部分是在config.xml definied层的XML节点中的第二个部分是将文件从文件夹层容器的完整路径。

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

注意:要小心你的资源的情况下(去看一下一个标准的Magento的良好做法)!



Answer 3:

你应该修改config.xml文件,添加一个<global>在你的标签<models>标记:

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

在此之后,为了实例化一个模型中使用这样的:

Mage::getModel('firstmodule/simpleoutput')

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



文章来源: Mage::getModel is returning false
标签: magento