跳到内容

路由

编辑此页

Symfony CMF 路由组件扩展了 Symfony 核心路由组件,以提供更大的灵活性。最重要的区别在于 CMF 路由组件可以从数据库加载路由信息。

提示

本章提供关于 Symfony CMF 路由实现的背景信息。如果您只是想在 CMF 中使用路由,请阅读 RoutingBundle。如果您想自定义路由的工作方式,请继续阅读本章。

与 Symfony 路由组件一样,CMF 路由组件也不需要完整的 Symfony 框架,也可以在独立项目中使用。

Symfony CMF 路由组件的核心是 ChainRouter。ChainRouter 尝试将请求与每个已注册的路由器进行匹配,忽略 ResourceNotFoundException,直到所有路由器都有机会进行匹配。第一个匹配获胜 - 如果没有路由器匹配,则抛出 ResourceNotFoundException 异常。默认的 Symfony 路由器可以添加到此链中,因此除了任何自定义路由之外,仍然可以使用标准路由机制。

此外,此组件还提供了 DynamicRouter。此路由器比 Symfony 核心路由器更可配置和灵活。它可以配置为从数据库加载路由,动态地向路由添加信息,以及从模型类生成 URL。

路由的目标

路由是框架的任务,它基于 Web 请求来确定必须调用的代码以及要应用的参数。Symfony 核心 RequestMatcherInterface 定义了路由器必须将 Request 转换为路由信息数组。在完整堆栈的 Symfony 框架中,要调用的代码在匹配参数的 _controller 字段中定义。框架将调用指定的控制器,通过名称将该方法的最终参数与匹配数组或 Request 对象属性字段中找到的其他参数进行匹配。

注意

有关 Symfony 框架中路由的良好介绍,请阅读 Symfony 书籍的路由章节

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

安装

您可以使用 composer 通过 symfony-cmf/routing 包来安装此组件。如果您正在使用 symfony-cmf/routing-bundle,则无需单独指定该组件,它会自动被要求安装。

Symfony 集成

如前所述,此组件旨在独立于 Symfony 框架使用。但是,如果您希望将其用作 Symfony CMF 项目的一部分,也可以使用集成 bundle。阅读更多关于 RoutingBundle 的信息

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可证获得许可。
目录
    版本