【问题标题】:cakePHP 1.3 routes and named paramscakePHP 1.3 路由和命名参数
【发布时间】:2011-04-13 07:43:37
【问题描述】:

我曾经在 cakePHP 1.2 上使用过这种路由

Router::connect('/mycategory/my-region', array('controller'=>'search', 'action'=>'properties''named'=>array('region'=>01)));

如何在 cake 1.3 中实现同样的功能

谢谢

【问题讨论】:

  • 我最终在路由 Router::connect('/mycategory/my-region', array('controller'=>'search', 'action'=>'properties', "region"=>01)); 在控制器 $this->params['named']['region'] = $this->params['region'];如果有更好的方法,请告诉我谢谢

标签: php cakephp routes router named


【解决方案1】:

如果my-region 始终等于01,那么您的解决方案与我猜想的任何其他解决方案一样好。但是,如果您希望能够拥有多个不同的区域,那么我会建议如下路线:

Router::connect('/mycategory/:my_region', 
    array('controller' => 'search', 'action' => 'properties'),
    array('pass' => array('my_region'), 'my_region' => '[\#a-zA-Z0-9_-]+')
);

所以你可以像这样在你的控制器中获得my-region的值:

function properties($my_region = NULL) {
    $regions = array('my-region' => '01');
    $id = $regions[$my_region];
}

使用 if/switch 语句可以大大改进控制器部分。只是想举一个非常基本的例子。

编辑:然后,像这样构建您的链接:

<?php echo $this->ExHtml->link(
    'My Region',
    array('controller' => 'search', 'action' => 'properties', 'my_region' => 'my-region')
); ?>

应该自动输出: &lt;a href="/mycategory/my-region"&gt;My Region&lt;/a&gt;

【讨论】:

  • 谢谢你!使用我的旧路线,所有链接都与我的映射同步,这个例子会做同样的事情吗?或 cake 生成的链接仍将指向控制器名称。谢谢
  • 好吧,如果您之前没有完全使用路由功能,您可能需要重写所有旧链接。我编辑了我的答案以提供一个例子。路由器真的很棒很强大,你真的应该尽量使用它!
猜你喜欢
  • 2011-12-23
  • 1970-01-01
  • 2011-03-17
  • 2011-05-18
  • 1970-01-01
  • 2013-01-29
  • 2012-05-13
  • 2011-02-02
  • 1970-01-01
相关资源
最近更新 更多