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

Cam*_*ron 2 php cakephp

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

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

谢谢

Dav*_*ave 6

常规php的例子:

...action.php?name=blah&id=7
Run Code Online (Sandbox Code Playgroud)

你可以这样访问:

$name = $_GET['name'];
$id = $_GET['id'];
Run Code Online (Sandbox Code Playgroud)

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

...action/name:blah/id:7
Run Code Online (Sandbox Code Playgroud)

你可以像这样访问它们:

$name = $this->params['named']['name'];
$id = $this->params['named']['id'];
Run Code Online (Sandbox Code Playgroud)

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


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

  • 完整的路由器支持(请参阅下面的@deceze评论解释此内容)
  • 与像Paginate这样的东西结合使它变得更容易/更清洁
  • 更好的SEO(取决于你通过的)
  • 你在CakePHP中 - 使用CakePHP的东西< - 他有点开玩笑说
  • ...和更多?

边注:

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

...action/blah/7
Run Code Online (Sandbox Code Playgroud)

这些由函数变量检索:

function action($name, $id) {
Run Code Online (Sandbox Code Playgroud)

  • +1路由器支持**.命名参数允许您通过重新定义路线来追溯更改整个URL架构.只要编辑`routes.php`,只要它适合你就可以将`/ foo/bar/baz:7`更改为`/ foo/7`. (2认同)