/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
的键进行索引。不过,这完全是猜测。