2011-07-01 47 views
2

之間的VAR和有什麼區別,因爲後者似乎是這樣的查詢字符串在CakePHP的處理/action?query=value/action/query:value訪問CakePHP的命名VAR和PHP GET兩個

之間的差異,我該怎麼辦要麼後者或前者在蛋糕?

感謝

回答

2

在第一種情況下,你可以訪問查詢字符串參數你會以同樣的方式在香草PHP:

foreach ($_GET as $param => $value){ 
    // do stuff 
} 

我從來沒有見過用第二種方法,但我最好的猜測是那些作爲控制器動作的額外參數出現並且可以通過類似於$_GET的關鍵字來索引。雖然這是一個總猜測。

+1

的其次是一個命名參數,它將在$ this-> namedArgs assoc中可用。陣列。 – stephenbayer

+0

好的,我已經說過我會怎麼做:'$ this-> Auth-> loginAction = array('admin'=> true,'prefix'=>'admin', 'controller'=>'users', 'action'=>'login','back'=> $ this-> referer());'以便後面是一個查詢字符串,比如'/?back = value' – Cameron

+0

你永遠不會在Cake中這樣做。您可以使用$ this-> request-> query或accessor方法。 – mark

6

常規PHP的示例:命名參數

$name = $_GET['name']; 
$id = $_GET['id']; 

例CakePHP中:

...action.php?name=blah&id=7 

你可以訪問此像

...action/name:blah/id:7 

,你可以訪問他們就像這樣S:

$name = $this->params['named']['name']; 
$id = $this->params['named']['id']; 

UPDATE:它不再建議使用名爲CakePHP中的參數,因爲他們已經在CakePHP中被刪除3.0+


CakePHP中使用命名參數的好處:

  • Full rou更好的支持(見下文解釋這個@deceze評論)
  • 使得它更容易/清潔劑時,用的東西像分頁結合
  • 更好的搜索引擎優化(depending on what you're passing
  • 你在CakePHP的 - 使用CakePHP東西< - 他有點開玩笑地說:
  • ......還有更多?

旁註:

您也可以通過URL發送參數/ CakePHP的不使用命名參數:

...action/blah/7 

這些都是由功能檢索瓦爾:

function action($name, $id) { 
+0

我會說「你在CakePHP中 - 使用CakePHP的東西」完全是主觀的。根據你進入它的程度,它會在開發過程中變得更容易,只需按照Cake的方式提交。我是'我們正在使用框架的理由'的狂熱支持者,但同時我認爲記住它是重要的是Cake ** PHP ** – cspray

+0

@Charles - 該行更像是一個笑話而不是實際的利益/原因,因此「< - 不是真正的......」部分。我贊同你。你不想盲目追隨蛋糕,但 - 如果沒有別的,似乎是一種強制一致性的好方法。 (編輯我的答案,使笑話更明顯):) – Dave

+2

+1 ** **路由器支持**。命名參數允許您通過重新定義路由來追溯性地更改整個URL模式。只要編輯'routes.php',只要它適合你,你可以改變'/ foo/bar/baz:7'到'/ foo/7'。 – deceze