在Symfony 2.2.1中是否可以创建如下路线:
/search/category_ids/1,2,3,4/subcategory_ids/32,23,9/language_ids/10,23,5 ...
其中每个网址部分都是可选的,例如用户可以访问网址
/search/category_ids/1,2,3,4/language_ids/10,23,5 ...
甚至
/search/subcategory_ids/2,23
我想摆脱传统的get参数,主要是为了美观。
答案 0 :(得分:2)
虽然有些框架不鼓励使用查询字符串,但symfony却没有,你只需要在查询字符串中传递参数:
/search?category_ids=1,2,3,4&subcategory_ids=...
可以通过请求对象访问这些参数:
public function searchAction(Request $request) {
$category_ids = $request->query->get('category_ids');
}
如果你真的需要传递路径中的参数,你可以通过路径末尾的“全部匹配”参数获得相同的结果:
@Route("/search/{params}", requirements={"params"=".*"}, defaults={"params"=""})
public function searchAction($params) {
}
您可以像这样解析$params
:
$parts = explode('/', $params);
$map = array();
for ($i = 0; $i < count($parts); $i+=2) {
$map[$parts[$i]] = $parts[$i+1];
}