0

我是 Magento 的新手,目前正在学习教程。

该教程似乎非常清晰和有用,尽管我无法获得

include(Alan/Storm/Model/Blogpost.php) [function.include]: failed to open stream: No such file or directory

要显示的错误,我的错误已打开。显然,如果我可以在下一步中按照教程所述显示模型名称,这将不是问题,但我缺少一些东西,需要一些关于我的代码的指导。

艾伦/Storm/etc/config.xml

<config>
<modules>
    <Alan_Storm>
        <version>0.1.0</version>
    </Alan_Storm>
</modules>

<models>        
    <storm>
        <class>Alan_Storm_Model</class>            
        <resourceModel>storm_mysql4</resourceModel>
    </storm>
</models>

<frontend>
    <routers>
        <storm>
            <use>standard</use>
            <args>
                <module>Alan_Storm</module>
                <frontName>storm</frontName>
            </args>
        </storm>
    </routers>
</frontend>

艾伦/风暴/控制器/indexController.php

class Alan_Storm_IndexController extends Mage_Core_Controller_Front_Action
{
public function indexAction() {
    echo 'This is the Alan Storm Module';
}

public function testModelAction() {
    $blogpost = Mage::getModel('storm/blogpost');
    echo get_class($blogpost);
}
}

我曾尝试将 Alan/Storm/Model 文件夹留空,但是当我访问http://magentotest.local/storm/Index/testModel时,我只是得到一个空白屏幕。我也尝试将 Blogpost.php 添加到 Model 文件夹,但这没有帮助。

我究竟做错了什么?

编辑!

我改变了

    public function testModelAction() {
    $blogpost = Mage::getModel('storm/blogpost');
    echo get_class($blogpost);
}

public function testModelAction() {
    $blogpost = Mage::getModel('storm/blogpost');
    echo get_class($blogposts);
}

为什么这行得通?在使用 get_class 函数之前,我没有创建一个名为 $blogposts 的变量。值得注意的是,我在数据库中的表称为 blogposts,但我看不出这将如何使脚本中的这种调整起作用。

编辑 2

新方法只显示我正在工作的控制器的名称,而不是模型/blogpost.php,这是我认为我要求的

4

1 回答 1

2

根据您提供的代码示例,您的<models/>标签位于错误的位置。

您已将其直接放在<config/>节点下方。

<!-- this is wrong -->
<config>
    <models>     
        <!-- ... -->
    </models>
</config>

它应该在<global/>节点下

<config>
    <global>        
        <models>
            <!-- ... -->
        </models>
    </global>
</config>

您可能被代码示例吓到了,它只显示了部分片段,而不是整个文档树。注意顶层节点是<global/>

在此处输入图像描述

那些代码示例可能会更清晰——那时我还在学习编写教程。

于 2013-06-19T16:07:54.057 回答