Yaml 如何让TYPO3路由增强器与自定义扩展(TYPO3 v10)正确配合使用

Yaml 如何让TYPO3路由增强器与自定义扩展(TYPO3 v10)正确配合使用,yaml,typo3,typo3-10.x,Yaml,Typo3,Typo3 10.x,问题: routeEnhancers: MyextensionCategory: type: Extbase limitToPages: [0,1,2] extension: Myextension plugin: Myextensionplugin routes: - routePath: '/categories/{category_title}' _controller: 'Item::listitem

问题:

routeEnhancers:
  MyextensionCategory:
    type: Extbase
    limitToPages: [0,1,2]
    extension: Myextension
    plugin: Myextensionplugin
    routes:
      -
        routePath: '/categories/{category_title}'
        _controller: 'Item::listitemsbycategory'
        _arguments:
          category_title: category
    defaultController: 'Item::listitemsbycategory'
    requirements:
      category_title: '^[a-z0-9].*$'
    aspects:
      category_title:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug
在Typo3V10中,我有一个自定义扩展,带有一个简单的“item”模型,该模型利用了系统类别。我正在尝试将系统类别URL段(例如“www.mywebsite.com/categories/books”)路由到我的项目控制器中的listitemsbycategory操作,以按特定类别显示项目。事实上,我有一个页面“包含”我扩展的FE插件(Myextensionplugin),位于“www.mywebsite.com/categories/”。我只需要URL“www.mywebsite.com/categories/books”来实际“调用”listitemsbycategory操作,这样我就可以使用类别的标题(在本例中为书籍)来获取该类别的记录。但是,将下面的代码放在我的站点的config.yaml代码中并不起作用。它只是将“www.mywebsite.com/categories/books”重定向到主页——就是这样。我已经玩了一整天的配置文件-似乎没有任何工作

总结一下我想要实现的目标:

routeEnhancers:
  MyextensionCategory:
    type: Extbase
    limitToPages: [0,1,2]
    extension: Myextension
    plugin: Myextensionplugin
    routes:
      -
        routePath: '/categories/{category_title}'
        _controller: 'Item::listitemsbycategory'
        _arguments:
          category_title: category
    defaultController: 'Item::listitemsbycategory'
    requirements:
      category_title: '^[a-z0-9].*$'
    aspects:
      category_title:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug
使“www.mywebsite.com/categories/books”调用页面上控制器的listitemsbycategory操作

Config.yaml代码(仅routeEnhancers部分):

routeEnhancers:
  MyextensionCategory:
    type: Extbase
    limitToPages: [0,1,2]
    extension: Myextension
    plugin: Myextensionplugin
    routes:
      -
        routePath: '/categories/{category_title}'
        _controller: 'Item::listitemsbycategory'
        _arguments:
          category_title: category
    defaultController: 'Item::listitemsbycategory'
    requirements:
      category_title: '^[a-z0-9].*$'
    aspects:
      category_title:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug

作为这个特殊问题的解决方案——limitToPages需要正确设置为我实际使用插件的那一页,而“类别”部分需要从代码的routePath部分中去掉


感谢@ChristophKern和@JulianHofmann提供了必要的提示

你把插件放在了哪一页?您的配置显示在第0、1和2页(
limittopage
)。我怀疑你的插件是否集成在页面UID=0上……路由路径不需要“/categories”(“/{category_title})应该足够了,因为插件页面已经提供了这一部分。除此之外,我没有看到您的配置中有任何明显的错误。感谢Christoph Kern和Julian Hofmann-您的两条评论帮助我找到了一个可行的解决方案。事实上,limitToPages需要正确设置为我实际使用插件的一个页面,即D“类别”需要从代码的routePath部分删除。再次感谢!