2010-11-23 153 views
0

我希望用戶可以衝浪到http://www.yyy.com/xxx xxx是一個參數。和www.yyy.com/xxx/zzz一樣。我有以下路由的正常工作:Cakephp路由

Router::connect('/:town', array('controller'=>'places', 'action'=>'index'), array('pass' => array('town'))); 
Router::connect('/:town/:category', array('controller'=>'places', 'action'=>'index'), array('pass' => array('town', 'category'))); 

但是,當我想TOT衝浪到不同的控制器,例如www.yyy.com/differentcontroller/add它可以追溯到地方控制器,除非我把它路由。 ..

有什麼想法嗎?

回答

0

我對蛋糕路線的記憶非常生疏,但如果我沒有記錯的話,你可以使用:controller /:action作爲一個規則來使蛋糕尋找一個有效的控制器/動作對。

1

您的路由列表中的第二條規則只是在域名後面尋找兩組字符,並將第一個字符視爲城鎮,將第二個視爲類別。因此,它錯誤地將「不同的控制者」解析爲城鎮名稱,將「添加」作爲一個類別。如果你想保留這個URL結構,那麼你需要添加更多特定的路由到你的路由文件來覆蓋像'add'這樣的路由,或者考慮將你現有的URL佈局改爲更具體的東西,如:

Router::connect('/places/:town', array('controller'=>'places', 'action'=>'index'), array('pass' => array('town'))); 
Router::connect('/places/:town/:category', array('controller'=>'places', 'action'=>'index'), array('pass' => array('town', 'category'))); 
+0

嗨我現在爲我的其他控制器定義顯式路由,但問題是,當我想使用Html幫助程序鏈接到我的原始位置,並且它是鏈接方法時,它不會按照我希望的方式執行路由。 echo $ this-> Html-> link(__('View',true),array('action'=>'view',$ place ['Address'] ['town'],$ place ['Place ']['類別'])); 會將我路由到http://www.yyy.com/places/view/Town/Category而不是http://www.yyy.com/Town/Category – 2010-12-24 16:18:10