symfony2:尝试在URL上传递参数

symfony2:尝试在URL上传递参数,symfony,Symfony,我将这个routing.yml放在一个包中: project_backend_update_item: path: /update-item/{id} defaults: { _controller: ProjectBackendBundle:Default:updateItem } 在我的控制器中: public function updateItemAction(Request $request) { $repository = $this->get

我将这个routing.yml放在一个包中:

project_backend_update_item:
    path:     /update-item/{id}
    defaults: { _controller: ProjectBackendBundle:Default:updateItem }
在我的控制器中:

public function updateItemAction(Request $request)
{

    $repository = $this->getDoctrine()
        ->getRepository('ProjectFrontendBundle:Item');
    var_dump($request->query->get('id'));

当我请求:“app_dev.php/update item/1”时,我得到NULL。为什么?我希望是“1”。

$request->query为您提供$\u GET参数(例如使用/update item?id=5) 您的参数“id”不是通过_GET传递的,而是通过路由传递的

你必须做到:

public function updateItemAction($id)
{
    var_dump($id);
}


在Symfony中,只要路由模式中有参数,就可以在控制器操作中添加同名变量

在您的情况下,您应该这样做:

public function updateItemAction($id, Request $request)
{
    $repository = $this->getDoctrine()
        ->getRepository('ProjectFrontendBundle:Item');

    var_dump($id);
}

将请求$Request替换为$id-->
public function updateItemAction($id, Request $request)
{
    $repository = $this->getDoctrine()
        ->getRepository('ProjectFrontendBundle:Item');

    var_dump($id);
}