Symfony3从URL获取参数

时间:2016-02-12 16:16:38

标签: symfony

我发现了symfony3,但我坚持用一个动作的链接获取传递的参数。 在我的twig文件中,我将用户重定向到一个动作:

<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>

我的行动,我正试图获得身份:

/**
 * @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"?

1 个答案:

答案 0 :(得分:4)

基础getParameter()类中的Controller方法正在从服务容器中查找参数。

我会将参数作为您路线的一部分。然后,您可以通过操作方法的参数检索值:

/**
 * @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');

    // ...
}