Typo3 如何使用路由器增强器翻译URL

Typo3 如何使用路由器增强器翻译URL,typo3,router,extbase,Typo3,Router,Extbase,我有一个定制的extbase扩展,它根据参数显示不同的内容 class SiteController extends ActionController { /** * @param int $year */ protected function newsAction(int $year) { ...... } } 这是我在config.yaml中的routeEnhancers routeEnhancers: News: type

我有一个定制的extbase扩展,它根据参数显示不同的内容

class SiteController extends ActionController {
   /**
    * @param int $year
    */
    protected function newsAction(int $year) {
        ......
    }
}
这是我在config.yaml中的routeEnhancers

routeEnhancers:
  News:
    type: Extbase  
    limitToPages: [6]
    extension: Site  
    plugin: Pi1  
    routes:
      - routePath: '/{year}',
        _controller: 'Site:news'
但是,它不会转换URL
http://landing.io/news?tx_site_pi1【年份】=2018&cHash=f1a79b262f6567570dd78b6148b17554
to
http://landing.io/news/2018
,但我可以访问
http://landing.io/news/2018?cHash=f1a79b262f6567570dd78b6148b17554
。所以,我想我错过了什么


有人能帮忙吗?

首先,修复config.yaml中的一个输入错误,它应该是
Site::news
,而不是
Site:news

经过一些调试,我终于解决了这个问题

据报道

创建extbase插件时,通常会有多个控制器/操作组合。因此,Extbase插件增强器是常规插件增强器的扩展,提供了生成多个变体的功能,通常基于控制器/动作对的数量构建

在Extbase插件增强器部分

然而,如果你想让extbase路由增强器工作,你必须在你的URL中有
&tx\u ext\u pi1[controller]=controller&tx\u ext\u pi1[action]=action
,这是本节中的所有URL,但我没有意识到。否则,您将在
\TYPO3\CMS\Extbase\Routing\extbasepluginhancer::verifyRequiredParameters()
中获得
FALSE
,并且永远不会转换URL。因此,我认为这一点应该包括在文件中,或者至少突出最后一句,从“通常”开始

同时,extbase中还有一个打字脚本设置,名为
config.tx_extbase.features.skipDefaultArguments
plugin.tx_EXT.features.skipDefaultArguments
,如果控制器和/或操作参数等于目标插件的默认控制器/操作,则会删除它们。如果它被启用,它也会因为同样的原因破坏路由增强器。不幸的是,我从一开始就启用了它,以使URL变短

还有另一个设置,
config.tx\u extbase.mvc.callDefaultActionIfActionCantBeResolved
,您可能需要注意,这可能会导致相同的问题


无论如何,新的路由功能非常棒。

如何生成链接?它是typlink还是表单?我通常使用和。你可以给你的Extbase路由增强器一个defaultController:。我想这也能解决你的问题。