【发布时间】:2012-07-29 01:17:38
【问题描述】:
我知道我可以通过$request->get('_route'); 访问当前路线名称。
如果我的路线是这样定义的:
/*
* @Route("/get_by_category/{id}", defaults={"id" = 0}, name="get_products_by_category")
*/
如何从服务中检索id 变量?
【问题讨论】:
我知道我可以通过$request->get('_route'); 访问当前路线名称。
如果我的路线是这样定义的:
/*
* @Route("/get_by_category/{id}", defaults={"id" = 0}, name="get_products_by_category")
*/
如何从服务中检索id 变量?
【问题讨论】:
你可以的
/*
* @Route("/get_by_category/{id}", defaults={"id" = 0}, name="get_products_by_category")
*/
public function getProductsAction($id)
{
}
$id 变量将在控制器中可用。
【讨论】:
您可以从Request获取所有路由相关参数
$routeParams = $request->attributes->get('_route_params');
$id = $routeParams['id'];
【讨论】:
$request->attributes->all() 没有返回 _route_params,但它确实提出了解决方案。谢谢!
$request->attributes->get('id') 可以解决问题。
【讨论】:
在 Symfony 3.4 中,我刚刚添加了 function functionName(int $id) 并且变量 $id 已在函数范围内定义。我的路径是something/{id}。对于多个参数like/{id}/that.{format},我只是在函数中添加了第二个参数:function functionName(int $id, string $format),并且它们都在作用域内。事实上,我的functionName 是一个用作路由控制器的类中的__invoke。
【讨论】: