2016-04-06 45 views
-3

我的問題是:如何從@Route獲取變量? Symfony2的

我想採取從@route兩個變量是這樣的:

class MultimediaController extends Controller 
{ 
    /** 
    * @return \Symfony\Component\HttpFoundation\Response 
    * @Route("/{sku}/{dimension}") 
    * @Method({"GET"}) 
    */ 
    public function indexAction($sku, $dimension) 
    { 
     $sku = {sku}; 

     return $this->render('ExampleFrontMultimediaBundle:Default:index.html.twig'); 
    } 

} 

我該怎麼辦?

+3

請在這裏詢問之前閱讀文檔。 – Mattia

+0

$ sku已經在您的控制器中可用,但參數名稱應該與路由器標記相同,在您的indexAction參數中缺少$ dimension。 – Meathanjay

+0

@Mattia Lol對不起,我對symfony真的很陌生,我不知道如何在他們的文檔中搜索好東西。 – Sermanes

回答

3

只需使用$sku

如果參數在路由聲明中定義並作爲參數傳遞給函數,則參數(即$sku)將採用路由參數的值。

所以,如果你瀏覽/test/123$sku將等於"test"$dimension將等於123

這是Routing documentation的第一段。

+0

呵呵,謝謝:) – Sermanes

+0

或者你使用'public function indexAction(Request $ request)'注入請求對象,然後使用'$ sku = $ request-> get('sku');'獲取參數。 – qooplmao

+0

@qooplmao如果參數沒有作爲參數傳遞,或者參數未在路徑定義中明確定義,這是強制性的,但在這種情況下,我認爲注入整個Request對象而不是參數有點矯枉過正。 – chalasr