我在捆绑包中有这个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"。
答案 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);
}