路由

1.3 版本
维护中的版本

协力文档 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 对象属性字段中找到的其他参数匹配该方法的最终参数。

有关在Symfony框架中路由的更好介绍,请阅读Symfony的 路由起步

要在Symfony框架以外使用此组件,请查看核心Symfony Routing组件 以获得对组件的基本了解。 CMF路由组件只是扩展了基本行为。

安装 

你可以通过 composer 安装此组件,包(package)名是 symfony-cmf/routing。如果使用 symfony-cmf/routing-bundle,则不需要单独指定此组件,它会自动required。

与Symfony整合 

如前所述,该组件被设计成可以独立于Symfony框架使用。但是,如果你希望将其用作Symfony CMF项目的一部分,还可以使用集成的bundle。有关 RoutingBundle 中 RoutingBundle 的更多信息,请参阅bundles文档。

章节 

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)