【发布时间】:2014-01-28 19:52:06
【问题描述】:
在 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 版中的更改将如何改进这方面的事情...
【问题讨论】:
标签: php cakephp cakephp-3.0