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

时间:2011-07-01 19:49:09

标签: php cakephp

/action?query=value/action/query:value

之间有何区别?

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

由于

2 个答案:

答案 0 :(得分:6)

常规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'];

UPDATE:不再建议在CakePHP中使用命名参数,因为它们已在CakePHP 3.0 +中删除


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

  • 完全支持路由器(请参阅下面的@deceze评论解释此内容)
  • 与Paginate
  • 等组合时更容易/更清洁
  • 更适合SEO(depending on what you're passing
  • 你在CakePHP中 - 使用CakePHP的东西< - 他有点开玩笑说
  • ......等等?

旁注:

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

...action/blah/7

这些由函数变量检索:

function action($name, $id) {

答案 1 :(得分:2)

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

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

我从未见过第二种使用的方法,但我最好的猜测是那些作为控制器动作的额外参数,并且可以通过类似于$_GET的键来索引。不过,这是一个完全的猜测。