2011-10-17 220 views
3

我正在建立一个控制器,当我打电话给一个行动时,我得到一个404错误(上周一切工作!)。我打电话使用操作:Magento控制器路由是路由到控制器的noRouteAction

http://www.website.com/route/controllername/actionname

如:

http://www.website.com/abcdef/test/echo

我已经研究这个问题(使用法师::日志( '..')),并发现控制器正在加载。控制者的名字也很好。进一步调查发现,我的控制器内的noRouteAction正在被调用。

即我控制器包含:

public function noRouteAction() { 
    echo "noRoute Action"; 
} 

public function echoAction() { 
    echo "Echo Action"; 
} 

当我打电话http://www.website.com/abcdef/test/echo我得到 “noRoute行动”。

为什么不调用echoAction?


编辑:

config.xml文件

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Abcdef_Web> 
      <version>1.0.0</version> 
     </Abcdef_Web> 
    </modules> 
    <global> 
     <helpers> 
      <abcdef> 
       <class>Abcdef_Web_Helper</class> 
      </abcdef> 
     </helpers> 
     <blocks> 
      <abcdef> 
       <class>Abcdef_Web_Block</class> 
      </abcdef> 
     </blocks> 
    </global> 
    <frontend> 
     <routers> 
      <abcdef> 
       <use>standard</use> 
       <args> 
        <module>Abcdef_Web</module> 
        <frontName>abcdef</frontName> 
       </args> 
      </abcdef> 
     </routers> 
     <layout> 
      <updates> 
       <abcdef> 
        <file>abcdef.xml</file> 
       </abcdef> 
      </updates> 
     </layout> 
    </frontend>  

</config> 

控制器类文件:(TestController.php)

<?php 

class Abcdef_Web_TestController extends Mage_Core_Controller_Front_Action { 

    public function noRouteAction() { 
    echo "noRoute Action"; 
    } 

    public function echoAction() { 
    echo "Echo Action"; 
    } 

} 

?> 
+0

请添加您的config.xml,全控制器类文件(文件名精确!)。这将真正帮助诊断问题 – mcmil

+0

@M_F文件添加 – mas

+0

嗯,我用你的代码(+添加适当的'Abcdef_Web.xml'到应用程序\ etc \模块),我看到“回声行动”在我的屏幕上。尝试删除你的'var \ cache'。 – Zyava

回答

6

确定发现了这个问题! !

看来, “添加商店代码到URL” 设置为yes,那么Magento的期待:

http://www.website.com/storecode/abcdef/test/echo

而不是:

http://www.website.com/abcdef/test/echo

对于那些具有相同问题。这可以通过禁用:

系统/配置/常规/网站/ URL选项/添加商店代码到URL

注:

我不记得将此选项设置为Yes。我看过一些报道,这个设置可以自动改变(4人汇报吧):

http://www.magentocommerce.com/boards/viewthread/192613/

+0

负责这个的代码在文件app/code/core/Mage/Core/Controller/Request/Http.php中的函数setPathInfo中。 Section“if($ this - > _ canBeStoreCodeInUrl()){” – mas