symfony2:尝试传递URL上的参数

时间:2014-09-24 08:04:19

标签: symfony

我在捆绑包中有这个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"。

2 个答案:

答案 0 :(得分:2)

$ request->查询为您提供$ _GET参数(例如使用/ update-item?id = 5) 您的参数' id'不是用_GET传递的,而是用路由传递的。

你必须这样做:

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

public function updateItemAction(Request $request, $id)
{
    var_dump($id);
}

答案 1 :(得分:0)

在Symfony中,只要路由模式中有参数,就可以在控制器操作中添加一个具有相同名称的变量。

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

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

    var_dump($id);
}