1

我正在努力掌握在 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/controllers/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/model/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';
}
}
4

3 回答 3

0

像往常一样 :

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

当你做一个 getModel / getBlock / helper / etc

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

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

注意:请注意您的资源情况(查看标准 magento 以获得良好实践)!

于 2013-07-11T08:47:05.900 回答
0

你必须换行<models><global>就像这样:

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

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

于 2013-07-11T08:48:14.233 回答
0

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

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

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

Mage::getModel('firstmodule/simpleoutput')

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

于 2013-07-11T11:00:31.327 回答