访问CakePHP命名的vars和PHP GET的vars以及两者之间的区别


Accessing CakePHP named vars and PHP GET vars and difference between the two

/action?query=value/action/query:value 之间有什么区别

因为后者似乎是CakePHP中处理查询字符串的方式,我如何在Cake中处理后者或前者?

感谢

常规php示例:

...action.php?name=blah&id=7

你可以访问如下:

$name = $_GET['name'];
$id = $_GET['id'];

CakePHP中带有命名参数的示例:

...action/name:blah/id:7

你可以这样访问它们:

$name = $this->params['named']['name'];
$id = $this->params['named']['id'];

更新:不再建议在CakePHP中使用命名参数,因为它们已在CakePHP3.0+中删除


在CakePHP中使用命名参数的好处:

  • 完全支持路由器(请参阅下面的@deceze评论对此进行解释(
  • 与Paginate等组合使用时更容易/更干净
  • 更适合SEO(取决于你通过的内容(
  • 你在CakePHP中-使用CakePHP的东西<-他说得有点开玩笑
  • 。。。还有更多

旁注:

您也可以通过url/CakePHP发送参数,而无需使用命名参数:

...action/blah/7

这些由函数变量检索:

function action($name, $id) {

在第一种情况下,您可以像在普通PHP中一样访问查询字符串参数:

foreach ($_GET as $param => $value){
    // do stuff
}

我从未见过使用第二种方法,但我的最佳猜测是,这些方法作为控制器操作的额外参数,可以通过类似于$_GET的键进行索引。不过,这完全是猜测。