访问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.数组中提供。好的,已经说过我该怎么做:
    $this->Auth->loginAction=array('admin'=>true,'prefix'=>'admin',controller'=>'users',action'=>'login',back=>$this->referer());
    所以back是一个查询字符串,比如
    /?back=value
    ,你永远不会在蛋糕中这样做。您可以使用$this->request->query或accessor方法,我认为“您在CakePHP中-使用CakePHP东西”完全是主观的。这取决于你对它的了解程度,在开发过程中,简单地服从Cake做事的方式要容易得多。我是“我们使用框架是有原因的”的狂热支持者,但同时我认为重要的是要记住它是有原因的CakePHP@Charles-这句话更像是一个笑话,而不是一个实际的好处/理由,因此“+1表示路由器支持。命名参数允许您通过重新定义路由追溯更改整个URL模式。只要您觉得合适,您就可以通过编辑
    routes.php
    /foo/bar/baz:7
    更改为
    /foo/7