2012-03-14 70 views
2

我正在閱讀$ params上的CakePHP手冊,並想知道每個參數的適當用法是什麼?我知道返回的數組稍微有些不同('url'實際上有一個名爲'url'的數組鍵,它返回控制器/操作,而'named'不會。有人可以舉例說明爲什麼它很重要(我看到了url的結構差異,也不知道爲什麼key:value和key = value之間的區別)

+0

一個優點命名參數是更可讀的URL,因此更適合搜索引擎優化。 – Ehtesham 2012-03-15 14:37:38

回答

8

TLDR:對於CakePHP 2.x:是否使用params ['named']或params ['url']取決於您要查找的數據。'url'返回域後的整個url的字符串'named'返回數組任何通過「命名」變量(逗號分隔鍵:值對)


CakePHP的3.X:沒有 '命名' 變量


更深入的解釋:

最好的方式來獲得的,爲什麼你會使用一個想法另一個是在視圖中的調試參數:

debug($ this-> 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‘URL’問題是隻要看一下數據解釋。

$this->params['url']返回字符串'dashboards/index/1/2/blah:test'(在大多數情況下不是十分有用)。

$this->params['named']返回鍵/值ARRAY您的命名變量(在這種情況下,只有一個變量):array('blah' => 'test');(更多的可用,如果這就是我們正在尋找)

所以...答案是,如果你想命名變量,使用'named' - 如果要將URL的末尾作爲字符串,請使用'url'。

+0

本手冊解釋了這一點,它只是沒有給出「爲什麼」.....因爲'url'另外給你控制器和動作,所以例如,如果你需要做一個功能,讓你改變控制器和幹事情的行動?和'命名'只是更少的項目返回/較少的內存使用? – huzzah 2012-03-14 21:26:57

+0

修改回答解釋。 – Dave 2012-03-14 23:00:48

+0

優秀。謝謝! – huzzah 2012-03-15 14:49:05

0

$ this-> params ['url']

存儲請求的當前URL以及獲取變量的鍵值對。例如,如果URL /職位/視圖/ VAR1 = 3 & VAR2 = 4叫,$這個 - > PARAMS [ '網址']應該是這樣的:?

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