2011-10-17 132 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