2016-02-12 161 views
1

我發現symfony3,但我堅持要獲取通過動作鏈接傳遞的參數。 在我的樹枝文件,即時通訊將用戶重定向到一個動作:Symfony3從URL獲取參數

<td><a href="{{ path('esprit_park_affiche', {'id': voiture.id, 'serie': voiture.serie, 'dateMise': voiture.dateMiseCirculation, 'marque': voiture.marque}) }}" target="_blank">go to</a></td> 

和IM我的行動,我試圖讓與ID:

/** * @Route(「/ AfficheDetail「,name =」esprit_park_affiche「) */ public function afficheAction() { $ id = $ this-> getParameter(」id「);

return $this->render("@EspritPark/Voiture/affiche.html.twig", array("id" => $id)); 

}

但每次我得到:The parameter "id" must be defined. 喜歡的getParameter心不是返回任何東西。

我甚至試過用:

$id = $this->get("request")->get("id"); 

,但我得到:You have requested a non-existent service "request". Did you mean one of these: "monolog.logger.request", "request_stack", "router.request_context", "data_collector.request"?

回答

3

從基ControllergetParameter()方法查找從服務容器參數。

我會使參數成爲你的路線的一部分。然後,您可以通過動作方法的參數檢索值:

/** 
* @Route("/AfficheDetail/{id}/{serie}/{dateMise}/{marque}", name="esprit_park_affiche") 
*/ 
public function afficheAction($id, $serie, $dateMise, $marque) 
{ 
    // ... 
} 

如果不將它們添加到路由模式,他們將通過URL參數訪問(當前請求會如果鍵入提示自動注入與Request類的爭執):

public function afficheAction(Request $request) 
{ 
    $id = $request->query->get('id'); 
    $serie = $request->query->get('serie'); 
    $dateMise = $request->query->get('dateMise'); 
    $marque = $request->query->get('marque'); 

    // ... 
}