路由全部通過調用Router :: connect('catch to','where send to');
所以可以簡單:
Router::connect('/food/tips', '/tips/index/food');
或優選的方法(使用內建在網址構建蛋糕)
Router::connect('/food/tips/*', array('controller' => 'tips', 'action' => 'index', 'food');
第一種方法採用一個字符串參數,並把它傳遞給另一字符串,這將是一個網址,你將不得不趕上你的控制器,並期望通過URL傳遞參數。
第二種方法使用內置URL前這需要用鑰匙控制器和動作的陣列的蛋糕(還有其他選擇:http://api.cakephp.org/class/router#method-Routerurl) 第二優選由於正確的格式和未來的靈活性(I相信)。
第二種方法中的任何傳遞參數都只是作爲數組中未命名的項目傳遞。命名參數僅作爲鍵控元素傳遞。所以,如果我想創建這樣一個URL這個
/職位/索引/查找:所有/頁:2
我會寫這樣的網址:
Router::connect('/url_to_catch', array('controller' => 'posts', 'action' => 'index', 'find' => 'all', 'page' => 2);
所以只是爲了完成,我實際上將通過你的參數通過命名:
Router::connect('/happiness/tips/best_tips', array('controller' => 'tips', 'action' => 'index', 'items' => array('happiness', 'best_tips'));
這將需要一個有趣的在你的提示控制器中,看起來像這樣:
function tips(){ $this->passedArgs['items']; }
啊你打我吧!我想我輸入緩慢;) – 2011-04-27 15:26:59
謝謝@ vindia,這不是解決我的問題(我的錯,我會編輯原來的問題) 至於約定,我的問題是,我有一個提示控制器,但沒有提示部分。 。所以我需要將每個'節/提示'路由到提示控制器... – yossi 2011-04-27 16:06:44
謝謝,我嘗試了幾個教程和guides.same結果。無法路由基於動作值的控制器..不知道爲什麼 – yossi 2011-04-28 14:55:45