Typo3 如何使用路由器增强器翻译URL
我有一个定制的extbase扩展,它根据参数显示不同的内容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
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'
但是,它不会转换URLhttp://landing.io/news?tx_site_pi1【年份】=2018&cHash=f1a79b262f6567570dd78b6148b17554
tohttp://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:。我想这也能解决你的问题。