0

在 Symfony 2.2.1 中是否可以创建如下路由:

/search/category_ids/1,2,3,4/subcategory_ids/32,23,9/language_ids/10,23,5 ...

每个 url 部分都是可选的,例如用户可以访问 url

/search/category_ids/1,2,3,4/language_ids/10,23,5 ...

甚至

/search/subcategory_ids/2,23 

我想摆脱传统的获取参数来支持这一点,主要是为了美观。

4

1 回答 1

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];
}
于 2013-05-18T11:09:42.060 回答