访问CakePHP命名变量和PHP获取变量以及两者之间的差异
访问CakePHP命名变量和PHP获取变量以及两者之间的差异,php,cakephp,Php,Cakephp,/action?query=value和/action/query:value 因为后者似乎是CakePHP中处理查询字符串的方式,我如何在Cake中处理后者或前者 感谢在第一种情况下,您可以使用与在Villa PHP中相同的方式访问查询字符串参数: foreach ($_GET as $param => $value){ // do stuff } 我从未见过使用的第二种方法,但我最好的猜测是,这些方法作为控制器操作的额外参数,可以通过其键进行索引,类似于$\u GET。不过,
/action?query=value
和/action/query:value
因为后者似乎是CakePHP中处理查询字符串的方式,我如何在Cake中处理后者或前者
感谢在第一种情况下,您可以使用与在Villa PHP中相同的方式访问查询字符串参数:
foreach ($_GET as $param => $value){
// do stuff
}
我从未见过使用的第二种方法,但我最好的猜测是,这些方法作为控制器操作的额外参数,可以通过其键进行索引,类似于
$\u GET
。不过,这完全是猜测。常规php示例:
...action.php?name=blah&id=7
...action/name:blah/id:7
您可以通过以下方式访问:
$name = $_GET['name'];
$id = $_GET['id'];
使用CakePHP命名参数的示例:
...action.php?name=blah&id=7
...action/name:blah/id:7
您可以这样访问它们:
$name = $this->params['named']['name'];
$id = $this->params['named']['id'];
更新:不再建议在CakePHP中使用命名参数,因为它们已在CakePHP 3.0中删除+
在CakePHP中使用命名参数的好处:
...action.php?name=blah&id=7
...action/name:blah/id:7
- 完全路由器支持(请参阅下面的@deceze注释解释)
- 与Paginate等工具结合使用时更容易/更干净
- 更好的搜索引擎优化()
- 你在CakePHP中-使用CakePHP的东西第二个是命名参数,它将在$this->namedArgs assoc.数组中提供。好的,已经说过我该怎么做:
所以back是一个查询字符串,比如$this->Auth->loginAction=array('admin'=>true,'prefix'=>'admin',controller'=>'users',action'=>'login',back=>$this->referer());
,你永远不会在蛋糕中这样做。您可以使用$this->request->query或accessor方法,我认为“您在CakePHP中-使用CakePHP东西”完全是主观的。这取决于你对它的了解程度,在开发过程中,简单地服从Cake做事的方式要容易得多。我是“我们使用框架是有原因的”的狂热支持者,但同时我认为重要的是要记住它是有原因的CakePHP@Charles-这句话更像是一个笑话,而不是一个实际的好处/理由,因此“+1表示路由器支持。命名参数允许您通过重新定义路由追溯更改整个URL模式。只要您觉得合适,您就可以通过编辑/?back=value
将routes.php
更改为/foo/bar/baz:7
。/foo/7