2016-04-06 43 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