Symfony2 为特定路由动态分配控制器

Symfony2 dynamically assign controller for specific route

我不确定我是否以正确的方式解决这个问题

我需要相同的路由模式来执行 2 个不同的操作,就像这样

/{category}

去 productAction 和

/{brand}

前往 brandAction(无前缀)

对 DB 的查询会告诉我这个参数是哪种类型的实体,然后我可以分配 action/controller 来处理它

  1. 我可以创建一个动作来处理这个模式并相应地重定向到另一个动作

  2. 我可以在 kernel.controller 事件中创建一个 Listener 并相应地重新分配控制器

  3. 我可以使用 Symfony CMF 但在我看来太过分了。

提前致谢

使用选项 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);
}