ChainRouter
编辑该页面ChainRouter
在Symfony CMF的核心路由组件ob娱乐下载位于ChainRouter
。它被用作替代Symfony的默认路由系统。ob娱乐下载
的ChainRouter
作品通过接受一组优先路由策略,RouterInterface实现,通常被称为“路由器”。
当处理传入请求ChainRouter
遍历配置路由器,按配置优先级排序,直到其中一个可以匹配请求或匹配并提供的URL请求参数。
请注意
从历史上看,路由器必须独自做匹配的URL字符串。因为Symfob娱乐下载ony 2.2,或者实现RequestMatcherInterface
做完整的匹配请求对象要使用其他请求信息考虑像域或接受编码。的ChainRouter
支持两种类型的匹配。
将路由器添加到链
路由器添加使用添加
的方法ChainRouter
。使用此默认添加Symfony路由器:ob娱乐下载
1 2 3 4 5 6
使用ob娱乐下载\组件\路由\路由器;使用ob娱乐下载\Cmf\组件\路由\ChainRouter;美元chainRouter=新ChainRouter ();美元chainRouter- >add (新路由器(…));美元chainRouter- >匹配(“/ foo / bar”);
现在,当ChainRouter
匹配一个请求时,它将要求Symfonyob娱乐下载路由器
要求是否匹配。如果没有匹配,它会抛出一个ResourceNotFoundException。
举例来说,如果你添加一个新的路由器dynamicroute
后,它会被称为Symfony路由器(因为这是添加第一次)。ob娱乐下载控制命令,您可以使用第二个参数添加
方法设置优先级。更高的优先级排序。
1 2 3 4 5 6 7 8
使用ob娱乐下载\Cmf\组件\路由\dynamicroute;/ /……美元chainRouter- >add (新路由器(…)1);美元dynamicroute=新dynamicroute (…);/ /……美元chainRouter- >add (美元dynamicroute,One hundred.);
请注意
您将学习如何实例化dynamicroute在本文的后面。
路由器编译器通过注册
此组件提供了一个RegisterRoutersPass
。如果你使用ob娱乐下载Symfony依赖注入组件,您可以使用该编译器通过注册所有路由器与特定的标签:
1 2 3 4 5 6 7 8
使用ob娱乐下载\Cmf\组件\路由\DependencyInjection\编译器\RegisterRoutersPass;使用ob娱乐下载\组件\DependencyInjection\ContainerBuilder;/ /一个ContainerBuilder美元容器=……;美元通过=新RegisterRoutersPass (“cmf_routing.router”,“路由器”);美元容器- >addCompilerPass (美元通过);
添加过后和配置容器建造者,你继续编译容器的解释ob娱乐下载Symfony DI组件编译部分。
您可以选择配置路由器链服务名称。编译器通过将修改这个服务定义寄存器链路由器时路由器从容器加载。如果你不指定任何东西,服务名称cmf_routing.router
。
您还可以配置标记名称你想使用编译器通过构造函数的第二个参数。如果你不,默认的标签路由器
。如果您正在使用ob娱乐下载Symfony CMF RoutingBundle,这个标签已经积极使用默认名称。
路由器
的ChainRouter
本身是不能做任何实际的路由决策。其唯一的责任是管理给定的一组路由器、负责匹配请求并确定其参数。
您可以轻松地创建自己的路由器通过实现RouterInterface但Symfonyob娱乐下载 CMF路由组件已经包含一个强大的路线匹配系统,您可以扩展来满足您的需求。
ob娱乐下载Symfony的默认路由器
本身就是ob娱乐下载一个Symfony路由机制RouterInterface
实现中,这意味着您可以使用它作为一个路由器ChainRouter
。这允许您使用默认路由申报系统。阅读更多关于这个路由器路由组件文章的核心文档。欧宝官网下载app