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