支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
协力文档 symfonychina感谢Yedrops的奉献。
Symfony CMF Routing组件扩展了Symfony核心路由组件,以允许更大的灵活性。最重要的区别是,CMF路由组件可以从数据库加载路由信息。
本章提供了关于Symfony CMF路由实现的来历信息。如果你只是想在CMF中使用路由,请阅读 RoutingBundle。如果你想自定义路由的工作原理,请继续阅读本章。
正如Symfony的路由组件一样,CMF路由组件不需要完整的Symfony框架,也可以在独立项目中使用。
Symfony CMF Routing组件的核心是ChainRouter(路由链)。ChainRouter 将尝试匹配一个请求或其注册的每个路由器,忽略 ResourceNotFoundException
,直到所有的路由都有匹配的机会。第一个匹配胜出 - 如果没有匹配的路由,则抛出 ResourceNotFoundException
。默认的Symfony路由器可以添加到此链上,因此除了任何自定义路由之外,仍然可以使用标准的路由机制。
此外,此组件提供了 DynamicRouter(动态路由)。此路由器比Symfony核心路由有更多的可配置和更灵活。它可以配置为从数据库加载路由,动态添加信息到路由,并从模型类中生成URL。
路由是一个框架的任务来确定(在一个框架中路由的任务是),基于web请求来确定它必须调用什么代码以及应用哪些参数。 Symfony核心 RequestMatcherInterface
定义了路由必须将 Request
转换成路由信息数组。在完整的Symfony框架中,调用的代码在match参数的 _controller
字段中定义。框架将调用指定的控制器,通过名称与匹配数组或 Request
对象属性字段中找到的其他参数匹配该方法的最终参数。
你可以通过 composer 安装此组件,包(package)名是 symfony-cmf/routing。如果使用 symfony-cmf/routing-bundle
,则不需要单独指定此组件,它会自动required。
如前所述,该组件被设计成可以独立于Symfony框架使用。但是,如果你希望将其用作Symfony CMF项目的一部分,还可以使用集成的bundle。有关 RoutingBundle 中 RoutingBundle 的更多信息,请参阅bundles文档。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。