2011-03-25 156 views
2

我想在我的網站上做一些自定義路由,但在一個非常愚蠢的問題上一直停留2天。我有以下的路由配置:未找到CakePHP路由URL!

Router::connect('/your-solution/add-comment/*', array('controller' => 'comments', 'action' => 'add')); 
Router::connect('/admin/your-solution/add-comment/*', array('controller' => 'comments', 'action' => 'add', 'admin' => true)); 

的問題是,當我嘗試加載使用第二路徑格式化的URL,它給了我沒有找到404。 第一條規則正常工作。

對於這兩個規則,我有一個單獨的元素,包含一個表單,並指向格式化後的各自的規則。這兩個操作的唯一參數是解決方案標識,該標識在通配符中「包含」。

可能是什麼問題?非常感謝您的幫助!

編輯:

我發現了另一個奇怪的行爲。當我訪問/admin/your-solution/add-comment/3時,它會執行該操作。但是,如果我向該鏈接提交表單,則會顯示一個空白頁面,使用Firebug通知我該頁面未找到。很奇怪... 另外,我有一條類似的編輯評論路線。加載編輯表格和保存表格工作...

回答

0

顯然,問題一直存在於禁用的輸入中。刪除此元素後,表單提交正確並顯示目標頁面。

就我所知,爲什麼表單沒有提交,如果它有一個禁用的輸入呢?

+0

您是否在代碼中使用安全組件? – JohnP 2011-03-26 09:53:11

+0

是的,我正在使用它。 – linkyndy 2011-03-26 12:49:12

+0

查看我的評論以上Linkyndy!這是因爲SecurityComponent期望所有的輸入都是使用FormHelper創建的(即:$ form-> input())。如果這是導致你麻煩的領域,你可以將它添加到$ disabledFields數組中。乾杯! – fsodano 2011-03-26 15:33:57

5

你好嗎?

爲了看看到底爲什麼沒有工作,去你/app/config/core.php並尋求這一行:

Configure::write('debug', 2); 

,並確保值設置爲「2 」。這樣,它不會再給你一個404錯誤,但實際問題,因爲在生產模式(調試設置爲0),所有的錯誤被掩蓋與404錯誤。

讓我知道!

乾杯!

+0

嗨。謝謝你問我,我很好。調試級別設置爲2.事情是,它沒有顯示我明確的404錯誤,但顯示我一個空白頁面,當我查看Firebug時,它顯示'頁面未找到'錯誤。 – linkyndy 2011-03-25 20:06:33

+0

我編輯了我的問題,也許我發佈了一些更有用的東西... – linkyndy 2011-03-25 21:51:30

+1

您是否使用安全組件?如果是這樣,請嘗試添加您的CommentsController方法「beforeFilter」,$ this-> Security-> validatePost = false;並看看它是否有效。如果它起作用,那是因爲某些東西正在修改該組件的_token。更多[cakePHP](http://book.cakephp.org/view/1296/Security-Component) – fsodano 2011-03-25 22:38:29

1

在你core.php中一定

配置::寫( 'Routing.prefixes',陣列( '管理員'));

在您的意見控制器,請確保您有

function admin_add() {...} 

也可以嘗試格式化路由聲明的其他方式。

Router::connect('/admin/your-solution/add-comment', array('controller' => 'comments', 'action' => 'add', 'admin' => true)); 

您的路線順序也很重要。你可能想檢查一下。

要調試加載URL時使用的路線,請嘗試將此代碼添加到您的app_controller.php文件中。

function __construct() { 
    $route = Router::currentRoute(); 
    pr($route); 
} 

這些只是一些提示,希望能幫助您前進。

+0

感謝所有這些提示!我有前兩個。你發佈的路由格式不包含任何額外的參數(如我需要的解決方案ID),因此它不起作用。我應該嘗試什麼其他替代路線格式?我想我已經嘗試過所有可能的組合。我甚至嘗試刪除這個旁邊的任何其他路線,仍然無法找到頁面... – linkyndy 2011-03-25 21:42:09

+0

我編輯了我的問題,也許我發佈了一些更有用的東西... – linkyndy 2011-03-25 21:51:02