2010-11-23 127 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