【问题标题】:Cakephp RoutingCakephp 路由
【发布时间】:2010-11-23 16:29:33
【问题描述】:

我希望用户可以冲浪到http://www.yyy.com/xxx,因为 xxx 是一个参数。等等 www.yyy.com/xxx/zzz 。我有以下路由可以正常工作:

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')));

但是当我想浏览另一个控制器示例 www.yyy.com/differentcontroller/add 时,它会返回到位置控制器,除非我为它创建路由...

有什么想法吗?

【问题讨论】:

    标签: php routing cakephp-1.3


    【解决方案1】:

    您的路由列表中的第二条规则是在域名后查找两组任意字符组合,并将第一组视为城镇,将第二组视为类别。结果,它错误地将“不同控制器”解析为城镇名称,将“添加”解析为类别。如果您想保留此 URL 结构,则需要向路由文件添加更具体的路由以涵盖“添加”路由等情况,或者考虑将现有 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')));
    

    【讨论】:

    • 嗨,我现在正在为我的其他控制器定义显式路由,但问题是当我想使用 Html 帮助程序和它的链接方法链接到我的原始位置时,它不会像我一样执行路由希望它成为。 echo $this->Html->link(__('View', true), array('action' => 'view', $place['Address']['town'],$place['Place'] ['类别']));会将我路由到yyy.com/places/view/Town/Category 而不是yyy.com/Town/Category
    【解决方案2】:

    我对 cake 路由的记忆相当生疏,但如果我没记错的话,您可以使用 :controller/:action 作为规则让 cake 寻找有效的控制器/动作对。

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 2012-08-17
      • 2011-06-09
      • 2012-03-03
      • 2013-12-13
      • 2012-11-28
      • 2011-09-02
      • 2012-09-26
      相关资源
      最近更新 更多