Magento模块IndexController - IndexAction函数404的

时间:2011-07-13 19:52:22

标签: php model-view-controller magento module controller

删除IndexAction周围的类会导致服务器错误,因此我知道代码在此之前按预期运行。

class Foo_Bar_IndexController extends Mage_Core_Controller_Front_Action{
    public function indexAction(){
        echo "<h1>Echo from indexcontroller.</h1>";
    }
}

理想情况下,回声会被加载模板文件所取代,但过去2天我一直坚持使用404,只是想过去。

我已经阅读了大约十几个教程,接着完成了4个,但每次都会弹出这个问题。 有没有人知道可能导致这种情况的原因?

Edit-- 对不起,为了简洁起见。我不确定我应该在多大程度上放弃这个页面。

@Alan Storm - 我在这里找到了你的教程。 http://alanstorm.com/magento_controller_hello_world(非常详细,非常有助于理解所有xml标记的功能)。这是教程的副本,Foo取代了Alanstormdotcom和Bar取代了Helloworld。即使是复制/粘贴,我也会使用相同的404。

这是我当前的配置文件: 路径:app / code / local / Foo / Bar / etc / config.xml(编辑:更正的路径)

<config>
<modules>
    <Foo_Bar>
        <version>0.1.0</version>
    </Foo_Bar>
</modules>
<frontend>
    <routers>
        <bar>
            <use>standard</use>
            <args>
                <module>Foo_Bar</module>
                <frontName>bar</frontName>
            </args>
        </bar>
    </routers>  
</frontend>
</config>

编辑--- 最后剩下的文件 路径:app / etc / modules / Foo_Bar.xml

<config>
<modules>
    <Foo_Bar>
        <active>true</active>
        <codePool>local</codePool>
    </Foo_Bar>
</modules>
</config>       

3 个答案:

答案 0 :(得分:2)

我认为你缺少在URL中添加store_code(我有同样的问题),可能你已经从admin启用了商店代码,换句话说,商店代码(例如:en,nl等)正在添加URL。

例如:

  

www.example.com/ zh_ /aaa.html

如果是,那么请以这种方式访问​​您的控制器和操作:

  

www.example.com/ store_code / front_name / controller / action

例如:

  

www.example.com/的 EN /酒吧/索引/索引

答案 1 :(得分:0)

您的路径不正确:

app/etc/modules/Foo/Bar/etc/config.xml

您应该将模块的定义文件Foo_Bar.xml放在app/etc/modules中,将模块的代码放在app / code / local中:

app/code/local/Foo/Bar/etc/config.xml
app/code/local/Foo/Bar/controllers/IndexController.php

编辑:要访问您的控制器,您应该访问此网址:

www.example.com/magento-instance/bar/index

遵循这种模式:

{magento_root} / {magento_module} / {magento_controller} / {magento_action}

答案 2 :(得分:0)

如果其他答案对您没有帮助,您可能需要尝试此路径模式:

     www.example.com/index.php/frontName/controllerName/actionName

我不明白为什么他们没有为这种网址创建重写规则。

无论如何,上面的模式在大多数情况下都适用。