2015-05-27 95 views
1

有沒有推薦的方法來選擇如何將數據提供給控制器?Symfony2最佳實踐:路由佔位符與查詢參數

我經常不得不決定,如果我想使用的路由佔位符,如:

/** 
* @Route("/hello/{name}", name="hello") 
*/ 
public function indexAction($name) 
{ 
    return new Response('<html><body>Hello '.$name.'!</body></html>'); 
} 

用法:/hallo/Thorsten

或者使用查詢參數($ _ GET):

/** 
* @Route("/hello") 
*/ 
public function indexAction() 
{ 
    $request = Request::createFromGlobals(); 
    $name = $request->get('name'); 
    return new Response('<html><body>Hello '.$name.'!</body></html>'); 
} 

用法:/hallo?name=Thorsten

+3

見http://stackoverflow.com/a/4028874/711206 – Federkun

+6

側面的問題:你爲什麼要建立內部的請求對象控制器?您通常應該使用'indexAction(Request $ request,...)',其中symfony將注入當前請求。 – Yoshi

+0

這兩者之間的區別在於,您必須檢查第二個示例中控制器內的值是否存在等。首先,你必須確保在生成url /路徑時擁有所有參數。我自己更喜歡第一個,因爲它更容易不會迷失在路線中.. 也可以爲一個Action創建多條路線,只需要不同的參數 – Koalabaerchen

回答

1

我不認爲有一個規則t他的,這取決於。

值是一個通用的字符串,可能包含空格或怪異的字符或符號或者斜線?我會使用查詢字符串,它廣泛用於搜索,分頁等。

是一組預定義的「單詞」或「數字」中的值,如類別,用戶ID,博客帖子slugs等?爲了簡單起見,我會使用路徑並遵循SEO規則。

看看這裏的更多信息,我的意思: http://googlewebmastercentral.blogspot.co.nz/2015/04/better-presentation-of-urls-in-search.html