2012-07-31 103 views
5

我知道我可以通过$request->get('_route');访问当前路由名称。Symfony2访问路由变量

如果我的路线定义是这样的:

/* 
* @Route("/get_by_category/{id}", defaults={"id" = 0}, name="get_products_by_category") 
*/ 

如何从服务中检索id变量?

回答

5

$request->attributes->get('id')的伎俩。

3

你可以做

/* 
* @Route("/get_by_category/{id}", defaults={"id" = 0}, name="get_products_by_category") 
*/ 
public function getProductsAction($id) 
{ 
} 

$id变量是在控制器内可用。

+0

这是正确的,假设我想从控制器访问它。我编辑了这个问题 - 我想从服务中访问它。 – acid 2012-07-31 10:07:07

8

你可以得到所有的路由相关的参数从Request

$routeParams = $request->attributes->get('_route_params'); 
$id = $routeParams['id']; 
+0

虽然它不起作用 - '$ request-> attributes-> all()'没有返回'_route_params',但它确实提供了解决方案。谢谢! – acid 2012-07-31 10:09:36