Routing 两条不同路线具有相同路径的螺栓CMS
请参见以下内容类型:Routing 两条不同路线具有相同路径的螺栓CMS,routing,routes,bolt-cms,Routing,Routes,Bolt Cms,请参见以下内容类型: pages: name: Pages singular_name: Page fields: # etc blogitems: name: Blogitems singular_name: Blog fields: # etc 我不希望博客显示为/blog/slug,而是像页面一样显示为slug 如何在routes中正确定义此选项?在最后一次尝试中,我发现在正常页面上返回一个错误: pagebinding:
pages:
name: Pages
singular_name: Page
fields:
# etc
blogitems:
name: Blogitems
singular_name: Blog
fields:
# etc
我不希望博客显示为/blog/slug
,而是像页面一样显示为slug
如何在routes中正确定义此选项?在最后一次尝试中,我发现在正常页面上返回一个错误:
pagebinding:
path: /{slug}
defaults:
_controller: controller.frontend:record
contenttypeslug: page
contenttype: pages
blogitemsbinding:
path: /{slug}
defaults:
_controller: controller.frontend:record
requirements:
contenttype: blogitems
问题是,当我把它们都留下时,上面的第一个会起作用,但下面的一个不会
谁能解释一下这一点,因为不幸的是这里没有记录:Silex/Symfony中的路由是基于regex的,匹配是二进制的,不幸的是,一旦路由匹配,那么这是唯一将运行的路由,因此为什么第一个路由匹配,而第二个路由被忽略 没有一种方法可以实现您想要的开箱即用-要实现它,您需要将第一个匹配指向您自己的控制器方法,而不是默认的
控制器。前端:录制,在您自己的方法中,您可以循环浏览您想要支持的内容类型,并继续查找,直到找到匹配的slug无论内容类型如何
Bolt无法将其作为标准功能支持,因为它在边缘情况下会导致相当多的并发症,例如,如果一个slug在多个contenttype中可用,如何操作,或者后端是否应允许某些contenttype生成相同的slug。Silex/Symfony中的路由是基于正则表达式的,匹配是二进制的,不幸的是,一旦路由匹配,那么这是唯一将运行的路由,因此,为什么第一条路由匹配,而第二条路由被忽略
没有一种方法可以实现您想要的开箱即用-要实现它,您需要将第一个匹配指向您自己的控制器方法,而不是默认的控制器。前端:录制,在您自己的方法中,您可以循环浏览您想要支持的内容类型,并继续查找,直到找到匹配的slug无论内容类型如何
Bolt无法将此作为标准功能来支持,因为它在边缘情况下会导致相当多的复杂性,例如,如果一个段塞在多个contenttype中可用,如何表现,或者后端是否应允许某些contenttype生成相同的段塞