Typo3 正在生成noCacheHash=true参数的操作链接,但未按预期工作
从8.7升级后,键入3v9.5.5,PHP7.2。清除缓存,关闭缓存,开发环境。我的扩展名已将requireCHashArgumentForActionArguments设置为0 我使用以下语法生成指向操作的链接:Typo3 正在生成noCacheHash=true参数的操作链接,但未按预期工作,typo3,typo3-extensions,typo3-9.x,Typo3,Typo3 Extensions,Typo3 9.x,从8.7升级后,键入3v9.5.5,PHP7.2。清除缓存,关闭缓存,开发环境。我的扩展名已将requireCHashArgumentForActionArguments设置为0 我使用以下语法生成指向操作的链接: 不幸的是,cHash参数始终存在于返回的URL中。它打破了扩展的逻辑,因为在通过ajax请求调用操作之前,我在JavaScript代码中向URL添加了额外的属性 我预期noCacheHash参数会导致从URL中删除cHash参数。 我希望设置requireCHashArgument
不幸的是,cHash
参数始终存在于返回的URL中。它打破了扩展的逻辑,因为在通过ajax请求调用操作之前,我在JavaScript代码中向URL添加了额外的属性
我预期noCacheHash
参数会导致从URL中删除cHash
参数。
我希望设置requireCHashArgumentForActionArguments
可以防止任何URL验证问题,即使URL中存在cHash
。
我知道cHashExcludedParameters
config设置,但是我想关闭扩展名的cHash
所以,我请求帮助或解释
Edit:如果我手动从URL中删除chash
参数并调用它,则请求处理成功。所以,这意味着,requireCHashArgumentForActionArguments
处理得很好,但只有当chash
不在URL中时
编辑2:
在我的例子中,无效的cHash导致调用
pageNotFoundOnCHashError
处理程序。我将$GLOBALS['TYPO3_CONF_VARS']['FE']['pageNotFoundOnCHashError']=false,它“解决”了一个问题(不是一个优雅的修复)。您需要创建自己的RouteEnhancer,并使用属性来删除URL中的漏洞。这里有一些很好的例子
您的config.yaml
可能如下所示:
ProductDetail:
type: Extbase
limitToPages: [your_PageId]
extension: YourExtPlaceholder
plugin: Pi1
routes:
- { routePath: '/{product_title}', _controller: 'Product::detail', _arguments: {'product_title': 'product'} }
defaultController: 'Product::detail'
defaults:
page: '0'
requirements:
page: '\d+'
aspects:
product_title:
type: PersistedAliasMapper
tableName: tx_yourext_domain_model_product
routeFieldName: slug
事实上,v8@MKlein中已经出现了这种情况,文档中说它可以被禁用:使用功能开关RequireHashArgumentForActionArguments可以禁用所有操作的行为。我只能为您提供一个解决方案:如果您已经在JS中摆弄了GET参数,只需踢出chash值,您就完成了。请记住:任何没有有效cHash参数的请求都不会被核心缓存,这可能是一个主要的性能主题!我已经想到了这一点,但这不是一个优雅而灵活的解决方案,因为在向JS应用程序添加新的ajax请求时,我必须始终记住移除手动裂缝。我知道Typo3中没有缓存的性能问题。谢谢你的意见和建议。