了解CakePHP中的参数

时间:2012-11-16 20:00:31

标签: php cakephp

我一直在使用链接在CakePHP中进行实验,并注意到有时您只是传递参数,有时会以名称前缀传递它们。两个链接之间有什么区别:

$this->Html->link('Edit', array('controller'=>'users','action'=>'edit', $user['User']['id']));

$this->Html->link('Edit', array('controller'=>'users','action'=>'edit', 'id'=> $user['User']['id']));

由于路由功能,他们创建的URL在很大程度上无关紧要,但在第一个示例中,我直接在控制器方法中访问id,如:

public function edit( $id )

但是对于命名参数,我必须使用路由器进行物理传递!

任何人都可以对此有所了解吗?有什么区别以及何时使用每个......

另外值得注意的是,在CakePHP 3.0中,他们已经删除了命名参数,这看起来很奇怪,因为BOTH链接仍然可以工作......对此有何看法?

1 个答案:

答案 0 :(得分:2)

你没有必要通过路由器传递命名的paramteres。 他们只是最终进入

$this->request->named[...] // or
$this->request['named'][...]; // or
$this->request->params['named'][...]

将删除它们以支持查询字符串参数:“?foo = bar& ...” 然后将通过

提供(已经!)
$this->request->query('foo'); // >= 2.3
$this->request->query['foo']; // <= 2.2

传递也将始终通过

提供
$this->request->pass[...]; // or
$this->request['pass'][...]; // or
$this->request->params['pass'][...];

但你可以发现所有人都在阅读http://book.cakephp.org/2.0/en/controllers/request-response.html

传递和命名/查询之间的主要区别在于后者更可交换,而由于直接访问而传递的内容

public function xyz($one, $two, $three)

当时更加深入整合,应该用于传递的独特信息。 命名/查询的没有特定的顺序,更像是分页和其他流畅的信息。

对我来说,传递参数实际上改变了网站(自己的规范链接等),而其他人不这样做,并且“规范链接”回到网站没有任何命名/查询参数(以避免分页上的重复内容等)