/controller/action/custom/
默認工作正常。
它調用ControllerController::action('custom')
。
如果你正在尋找的東西想通過URL /users/registration/thankyou
調用UsersController::thankyou()
,可以進行適當的途徑:
Router::connect('/users/registration/thankyou',
array('controller' => 'users', 'action' => 'thankyou'));
您可以將路線在一個規則是這樣的:
// Routes /users/registration/optin and /users/registration/thankyou to
// UsersController::optin() and UsersController::thankyou() respectively
Router::connect('/users/registration/:action',
array('controller' => 'users'),
array('action' => '(optin|thankyou)'));
在Cake中路由功能非常強大,完全靈活。與往常一樣,學習手冊:
http://book.cakephp.org/view/945/Routes-Configuration
的基礎是路由器的路由,例如匹配'/users/registration/:action'
,針對當前URL,包括第三個參數中指定的條件,例如'action' => '(optin|thankyou)'
(:action
部分必須與RegEx /^(optin|thankyou)$/
匹配)。
如果匹配,它會將第二個參數的默認值與從URL中提取的任何信息合併,例如,您將獲得array('controller' => 'users', 'action' => 'thankyou')
。
然後它通過CakeRoute::parse
,它構建了在控制器中執行debug($this->params)
時可以看到的陣列。該數組用於確定要加載哪個Controller以及要調用哪個動作。
基本正則表達式和參數匹配功能已經非常強大,但您可以通過繼承CakeRoute
並提供自定義parse
函數完全瘋狂,正如手冊末尾所簡述的那樣。 :)
我一直在閱讀路線,但作爲Cake的新手,很多組件之間的連接並不總是很明顯。 Cake先生做了很多魔術,這讓我想知道當我需要移出常規時它究竟在做什麼。 (我正在閱讀食譜,但我只能讀得這麼快) – Soviut 2010-07-29 03:25:23
@Soviut是的,這是一個非常複雜的話題,直到你得到它。增加了一些關於魔術的更多解釋,希望有所幫助。 – deceze 2010-07-29 03:49:31
謝謝。你有我的投票和我的接受!我只希望Cake文檔能夠告訴我完成任何事情的艱難方法,然後向我展示簡單的方法。首先顯示簡單的方法傾向於平息人們,然後當他們需要在公約之外做事時卡住。 – Soviut 2010-07-29 05:09:03