Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 正在生成noCacheHash=true参数的操作链接,但未按预期工作_Typo3_Typo3 Extensions_Typo3 9.x - Fatal编程技术网

Typo3 正在生成noCacheHash=true参数的操作链接,但未按预期工作

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

从8.7升级后,键入3v9.5.5,PHP7.2。清除缓存,关闭缓存,开发环境。我的扩展名已将requireCHashArgumentForActionArguments设置为0

我使用以下语法生成指向操作的链接:

不幸的是,
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中没有缓存的性能问题。谢谢你的意见和建议。