$ this-> params ['url']和$ this-> params ['named']之间的区别

huz*_*zah 4 cakephp

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

Dav*_*ave 10

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


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


更深入地解释:

了解你为什么使用其中一个的最佳方法是在视图中使用debug params:

调试($这个 - > 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'
Run Code Online (Sandbox Code Playgroud)

如您所见,它有很多数据.您的"为什么要使用"名为"vs"url的问题仅通过查看数据来解释.

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

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

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