【发布时间】:2015-10-17 07:54:28
【问题描述】:
我们有一个基于 symfony2 构建的 CMS 系统,当您想使用友好的 URL slug 作为实体标识符来实现与每个 CMS 系统类似的行为时,我一直在努力解决路由问题。
假设我有多个捆绑包,每个捆绑包都负责处理自己的东西和实体。如何使用他们自己的控制器和动态路由参数 slug?
例如,我有一个基础 slug 控制器,其路由“/{_slug}/”的优先级最低。因此它可以通过 slug 在知道的存储库中找到实体,但是这种解决方案并不灵活。而且它还降低了控制器的性能,因为现在您只有一个主控制器,而不是将逻辑延迟到每个捆绑包的每个控制器。
我发现了解决这个问题的几个想法。
- 从数据库加载路由 - 性能稍差,没有缓存路由
- 添加路由的动态加载器 - 代码过多,对 slug 的控制更差
- 自定义路由器,将在 symfony 核心 CMF 路由器之前使用 - 到目前为止,我已经找到了有关此解决方案的一些信息
我找到了几个主题,试图解决这个问题:
【问题讨论】: