在 CakePHP 3.0 中,命名参数已被删除(感谢上帝),以支持与其他应用程序框架内联的标准查询字符串参数。
不过,我仍然难以理解的是,在其他 MVC 框架中,例如 ASP.NET,您将在 ActionResult 中传递参数(与函数相同):
Edit( int id = null ) {
// do stuff with id
}
并且该方法将通过 id 作为查询字符串传递:/Edit?id=1
并且您将使用 Routing 使其非常像:/Edit/1
。
然而,在 CakePHP 中,函数参数中传递的任何内容,例如:
function edit( $id = null ) {
// do stuff with $id
}
必须作为传递参数来完成,例如:/Edit/1
绕过查询字符串的想法,并且还需要路由来改进 URL。
如果我将链接中的参数命名为该编辑,例如:
$this->Html->link('Edit', array('action' => 'edit', 'id' => $post->id));
然后我必须这样做:
public function edit() {
$id = $this->request->query('id');
// do stuff with $id
}
获取传递的参数id。本以为它会像在 ASP.NET for CakePHP 3.0 中那样在函数中提取它,但事实并非如此。
我更喜欢在编辑链接中为传递的值添加前缀,而不是仅仅传递它们,这样我就不必担心另一端的序数,而且我知道它们是什么等等。
有没有人在 CakePHP 中尝试过将数据传递给他们的方法的这些方法中的任何一种,并且可以更清楚地了解正确的做事方式以及 3.0 版中的更改将如何改进这方面的事情......