我不确定我是否以正确的方式处理此问题
我需要两个不同动作的相同路线模式,比如这个
/{category}
转到productAction和
/{brand}
转到brandAction(没有前缀)
对DB的查询会告诉我这个参数是哪种类型的实体然后我可以分配动作/控制器来处理它
我可以创建一个Action来处理这种模式并相应地重定向到另一个动作
我可以在kernel.controller 事件中创建一个监听器并相应地重新分配控制器
我可以使用 Symfony CMF ,但在我看来有点矫枉过正。
提前致谢
答案 0 :(得分:0)
使用选项2工作,不确定这是否是最好的方法
/**
* @param FilterControllerEvent $event
*/
public function onKernelController(FilterControllerEvent $event)
{
$routeService = $this->getRouteService();
$params = $request->attributes->all();
$slugs = array();
foreach ($params as $key => $param) {
if (preg_match('/slug*/', $key)) {
$node = $routeService->findBySlug($param);
if ($node !== null) {
$slug['id'] = $node->getEntityId();
$slug['type'] = $node->getEntityType();
$slugs[] = $slug;
}
}
}
$request->request->set('slugs', $slugs);
}