我正试图掌握在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';
}
}
答案 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
。