symfony2 GET参数覆盖route参数

时间:2014-12-01 09:29:02

标签: php symfony routing

我有一个能够在多条路线上行动的动作。我刚刚在这里定义了冲突部分。

/**
* @Route("/arama/ilanlar/{vehicleType}", requirements={"vehicleType"="(^$|araba|ticari-arac|motosiklet)"}, name="offer_search_fulltext_vehicletype")
* @Route("/{vehicleType}/{brand}", requirements={"vehicleType"="(araba|ticari-arac|motosiklet)", "brand"="[\w_-]+"}, name="offer_browse_vehicletype_brand")
* @Method({"GET"})
* @Template()
*/
public function searchAction(
    Request $request,
    $vehicleType = null,
    $brand = null,
) {
     ---
  }

第一个路由"品牌" var可以作为GET参数出现,但是在twig路径和url函数中传递这个变量它仍然会得到" brand" var as url参数,我在动作函数定义中给出null。

我在下面尝试设置路线参数,但它没有奏效。我怎么能阻止这种压倒一切?我必须在路由上使用相同的变量名称,如果不是,它将在整个代码中打破动态。

$request->attributes->set('_route_params', array_filter($request->get('_route_params')));

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

路由定义中的变量(并传递给控制器​​操作方法)是一个请求属性,因此URL中的任何数据都不会自动分配给操作方法中的变量。

你可以使用$ request-> get(“some name”)按照

的顺序查找变量

网址参数>请求属性>邮政指南