$ this-> params ['url']和$ this-> params ['named']之间的差异

时间:2012-03-14 17:54:18

标签: cakephp

我正在阅读关于$ params的CakePHP手册,并想知道每个的适当用法是什么?我知道返回的数组略有不同('url'实际上有一个名为'url'的数组键,它返回控制器/动作,而'named'则没有。有人可以举例说明为什么它会很重要使用一个而不是另一个?(我也看到了url中的结构差异,并且不知道为什么key:value和key = value之间的区别)

2 个答案:

答案 0 :(得分:9)

TLDR:对于CakePHP 2.x:是否使用params ['named']或params ['url']只取决于您要查找的数据。 'url'返回域后整个网址的字符串'named'返回任何传递的“命名”变量的数组(逗号分隔的键:值对) )


CakePHP 3.x:没有'命名'变量


更深入地解释:

了解您为何使用其中一个的最佳方法是在视图中调试参数:

调试($这 - > PARAMS);

你会看到,params数组中有很多数据。例如,使用我的网址:http://www.example.com/dashboards/index/1/2/blah:test

params => array(
    'plugin' => null,
    'controller' => 'dashboards',
    'action' => 'index',
    'named' => array(
        'blah' => 'test'
    ),
    'pass' => array(
        (int) 0 => '1',
        (int) 1 => '2'
    ),
    'models' => array(
        'Dashboard' => array(
            'plugin' => null,
            'className' => 'Dashboard'
        ),
        //...
    )
)
data => array()
query => array(
    'dashboards/index/1/2/blah:test' => ''
)
url => 'dashboards/index/1/2/blah:test'
base => ''
webroot => '/'
here => '/dashboards/index/1/2/blah:test'

如您所见,它有很多数据。您只能通过查看数据来解释您的“为什么要使用”名为“vs”网址的问题。

$this->params['url']返回STRING 'dashboards/index/1/2/blah:test'(在大多数情况下不太常用)。

$this->params['named']返回命名变量的键/值ARRAY(在这种情况下,只是一个变量):array('blah' => 'test');(如果我们正在寻找的话,那就更有用了)

所以...答案是,如果你想要命名变量,请使用'named' - 如果你想将URL的结尾作为字符串,请使用'url'。

答案 1 :(得分:0)

$this->params['url']

存储请求的当前URL以及get变量的键值对。例如,如果URL

/posts/view/?var1=3&var2=4被调用,$this->params['url']看起来像这样:

[url] => Array
(
 [url] => posts/view
 [var1] => 3
 [var2] => 4
)