【问题标题】:Understanding parameters in CakePHP了解 CakePHP 中的参数
【发布时间】:2012-11-05 14:10:05
【问题描述】:

我一直在用链接在 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 中,他们删除了命名参数,这看起来很奇怪,因为两个链接仍然可以工作......对此有什么想法吗?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    您不必通过路由器传递命名参数。 他们只是在

    $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)
    

    然后更深入地集成,应该用于传递的独特信息。 命名/查询的没有特定的顺序,更像是分页和其他流畅的信息。

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

    【讨论】:

    • 那么我将如何路由查询字符串?例如,如果我想将 /users?page=2 更改为 /users/page/2 Cheers
    • /users/page:2/。这也是由 cakephps 自己的分页引擎完成的;)
    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2020-06-23
    • 2023-03-13
    • 2023-02-02
    • 1970-01-01
    • 2013-04-08
    相关资源
    最近更新 更多