2010-05-24 80 views
1

我有一個包含一系列小部件的儀表板。根據規範,小部件需要被隱藏在/ widgets /目錄下。CakePHP路由別名,無前綴

所以我增加了以下我的routes.php文件

Router::connect('/widget/:controller/:action/*', array()); 

但我似乎遇到了小部件/鏈路/和widget /鏈路故障/視圖/ 1

我是新到CakePHP,但這似乎並不令人印象深刻。我還沒有找到任何書或搜索。所以,任何幫助表示讚賞。

謝謝。

+0

似乎在v1.2.7上工作(例如'/ widget/links/view/70'到'LinksController :: view(70)') – deizel 2010-05-25 11:30:07

+0

我會試着製作一個Widgets插件,然後路由會照顧它自己。 'array('plugin'=>'widgets','controller'=>'widgets','action'=>'weather')'kinda thing :) – 2010-05-25 13:26:04

+0

我正在運行1.3,但完整的URL確實有效。當通過'/ widget/links /'訪問時,索引操作就是問題所在。 我不認爲我想要一個Widgets插件。 – 2010-05-25 15:13:31

回答

0

呃......冒着說明明顯的風險......您的路線以/widget/開頭,但您表示您試圖通過複數URI(/widgets/)訪問它。這是一個問題。如果這只是一個錯字,這將有助於瞭解當你「遇到麻煩」時你看到的錯誤。

UPDATE:

Yes that was a typo. I corrected it. The error that appears for widget/links/ is: Error: WidgetController could not be found. It appears my index/default route is the main problem.

鑑於信息,似乎CakePHP的認爲widget是你的控制器。 Cake過程從上到下找到第一個匹配的路徑。確保你沒有以上的路線這個看起來像/:controller/...或任何其他路線上方的任何其他路線,以變量開始。

+0

是的,這是一個錯字。我糾正了它。 小部件/鏈接/出現的錯誤是:錯誤:無法找到WidgetController。 看來我的索引/默認路由是主要問題。 – 2010-05-25 13:21:59

+0

我沒有任何其他路由比默認頁面路由。請記住,這僅適用於從'/ widget/controller_name'訪問時的索引操作。你是對的,因爲它假設小部件是控制器,並試圖使用controller_name作爲操作。 顯然,這不是理想的行爲。我試圖添加一個'Router :: connect('/ widget /:controller /',array('action'=>'index'));' – 2010-05-25 15:11:57

+0

然後在路由語句中出現尾部斜線(/)可能是問題(和以前一樣,通過評論中的URI /路由組合來判斷)。路由可以很挑剔。您可能必須提供2條路線才能處理這兩種情況。 – 2010-05-25 16:34:28