从数据库查找路由:Symfony CMF DynamicRouter
核心 Symfony 路由系统在处理复杂的路由集合方面非常出色。在部署期间会转储高度优化的路由缓存。
然而,当处理大量需要良好可读 URL 的数据时(例如,为了搜索引擎优化目的),路由可能会变慢。此外,如果路由需要由用户编辑,则需要频繁重建路由缓存。
对于这些情况,DynamicRouter
提供了一种替代方法
- 路由存储在数据库中;
- 路径字段上有数据库索引,查找可以扩展到大量不同的路由;
- 写入只会影响数据库的索引,这非常高效。
当所有路由在部署时已知且数量不太大时,使用自定义路由加载器是添加更多路由的首选方法。当仅处理一种类型的对象时,对象上的 slug 参数和 #[ParamConverter]
属性可以很好地工作(请参阅 FrameworkExtraBundle)。
当您需要具有 Symfony 完整功能集的 Route
对象时,DynamicRouter
非常有用。每个路由都可以定义一个特定的控制器,以便您可以将 URL 结构与您的应用程序逻辑解耦。
DynamicRouter
内置了对 Doctrine ORM 和 Doctrine PHPCR-ODM 的支持,但也提供了 ContentRepositoryInterface
来编写自定义加载器,例如,用于其他数据库类型或 REST API 或任何其他内容。
DynamicRouter
在 Symfony CMF 文档中有说明。
这项工作,包括代码示例,均根据 Creative Commons BY-SA 3.0 许可获得许可。