我不明白 Symfony2 CMF 中动态路由器和链路由器之间的区别。我可以看到语法有所不同,但我不明白。
有人可以从概念上告诉我区别吗?
ChainRouter用于链接多个路由器。如果 router1 无法匹配到当前路径的路由,它将转到 router2 并检查该路由是否可以匹配该路由。如果没有匹配,它将抛出 404 not found 异常。
请注意,ChainRouter 无法匹配路由。它必须有这样做的路由器。
DynamicRouter是一个路由器。它匹配路径的路径。它不是 Symfony2 路由器,而是动态的。它将使用 RouteProvider 获取路由并将它们与路径匹配。
链式路由:
链式路由是一个概念,您可以在其中使用超过 1 种路由方法,即(默认 symfony 路由或动态路由)。使用链式路由,我们可以根据 symfony 路由器的工作方式指定要优先考虑哪种路由方法。
例如。举个例子,如果我们为动态路由提供比 symfony 默认路由更高的优先级,那么一开始 symfony 路由会寻找动态路由,如果没有找到,那么它只会尝试默认路由机制。这就是链式路由的工作原理要点链路由有助于使用多个具有提供优先级的路由机制。如下图是config.yml,显示了两种路由机制的优先级: //config.yml
cmf_routing:
chain:
routers_by_id:
router.default: 200
cmf_routing.dynamic_router: 100
可以类似的方式设置优先级。no越高,优先级越高
动态路由: 动态路由通过所谓的提供者(可能是数据库或服务)从动态源加载路由实例。然而,DynamicRouter 还能够根据匹配的路由确定要使用的控制器和模板。
如果您有兴趣了解更多信息: http ://symfony.com/doc/current/cmf/book/routing.html