Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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
Php TYPO3.CMS 9 LTS-可缓存extbase操作,但没有新路由的漏洞_Php_Typo3_Url Routing_Typo3 9.x - Fatal编程技术网

Php TYPO3.CMS 9 LTS-可缓存extbase操作,但没有新路由的漏洞

Php TYPO3.CMS 9 LTS-可缓存extbase操作,但没有新路由的漏洞,php,typo3,url-routing,typo3-9.x,Php,Typo3,Url Routing,Typo3 9.x,你知道怎么解决这个问题吗?我有一个extbase插件,它有一个列表和一个显示动作。两者都应该是可缓存的,并且详细信息链接不应该包含缓存哈希 我不能做到这一点。一旦我启用缓存,我总是会得到与细节操作相同的结果 我将插件配置为可缓存: //添加详细插件 \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( “Vendor.Extension”, “SomePiName”, [ “控制器名称”=>“显示”, ], [], \TYPO

你知道怎么解决这个问题吗?我有一个extbase插件,它有一个列表和一个显示动作。两者都应该是可缓存的,并且详细信息链接不应该包含缓存哈希

我不能做到这一点。一旦我启用缓存,我总是会得到与细节操作相同的结果

我将插件配置为可缓存:

//添加详细插件
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
“Vendor.Extension”,
“SomePiName”,
[
“控制器名称”=>“显示”,
],
[],
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::PLUGIN\u TYPE\u CONTENT\u元素
);
路由配置:

routeEnhancers:
  MyEnhanceName:
    type: Extbase
    extension: Extension
    plugin: SomePiName
    routes:
      - { routePath: '/{localized_entry}/{slug}', _controller: 'ControllerName::show', _arguments: {'slug': 'uuid'} }
    defaultController: 'ControllerName::show'
    aspects:
      localized_entry:
        type: LocaleModifier
        default: 'show'
        localeMap:
          - locale: 'de_DE.*|de_AT.*|de_CH.*'
            value: 'detail'
          - locale: 'it_IT.*'
            value: 'dettaglio'
      slug:
        type: customType
我的自定义特性通过在生成的slug上映射外部uuid来工作,该slug存储在我维护的mysql表中

我想要一个像这样的深度链接:

/path/to/page/show/子弹来了

但我明白了

/path/to/page/show/鼻涕虫来了?cHash=…

所以我补充说:

$GLOBALS['TYPO3\u CONF\u VARS']['FE']['cacheHash']['excludedParameters'][][][][]=“tx\u扩展名\u somepiname[uuid]”;
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][]=“tx_extension_somepiname[controller]”;
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][]=“tx_extension_somepiname[action]”;
现在链接看起来像:

/path/to/page/show/子弹来了

但一旦我激活缓存,我总是得到同样的结果

所以我需要一个缓存散列计算,但我不希望服务器在链接中

使用ContentObjectRenderer->typolink\u URL和配置生成链接:

[
“参数”=>“t3://myhandler?uuid=someuuid”
]
该处理程序转换为对ContentObjectRenderer->typolink\uURL的后续调用,配置为:

[
“参数”=>“t3://page?uid=someconfiguredpageuid”,
“useCacheHash”=>0,
“附加参数”=>“&tx_扩展名\u somepiname[uuid]=uuid&tx_扩展名\u somepiname[controller]=controller&tx_扩展名\u somepiname[action]=显示”
]
所以我的情况是,我可以有一个cacheHash和一个正确的结果,也可以有一个cacheHash和一个无效的结果


这意味着如何实现?

您不应该排除实际区分页面内容和裂缝生成的参数。它们只适用于外部跟踪参数,如
fbclid

如果依赖缓存,也不要使用useCacheHash=0


而是将路由增强器配置为删除
?cHash

您不应该排除实际区分页面内容和cHash生成的参数。它们只适用于外部跟踪参数,如
fbclid

如果依赖缓存,也不要使用useCacheHash=0


而是将路由增强器配置为删除
?cHash

好的,我解决了这个问题,下面是必要的步骤:

1) 就像Jonas Eberle建议的那样,我们从excludedParameters中删除extbase参数

2) 将细节操作配置为可缓存(从extbase plugin registration/ext_localconf.php中的第二个可能操作数组中删除控制器->操作组合)

3) 当使用自定义方面时,实现“StaticMapPableLeascentInterface”。我没有在核心中找到相关的部分,但似乎这个接口是必需的!只要看看持久的liasmapper


现在它工作了…

好的,我解决了这个问题,这里是必要的步骤:

1) 就像Jonas Eberle建议的那样,我们从excludedParameters中删除extbase参数

2) 将细节操作配置为可缓存(从extbase plugin registration/ext_localconf.php中的第二个可能操作数组中删除控制器->操作组合)

3) 当使用自定义方面时,实现“StaticMapPableLeascentInterface”。我没有在核心中找到相关的部分,但似乎这个接口是必需的!只要看看持久的liasmapper


现在它工作了…

你能解释/展示一下
customType
到底做了什么吗?它实现了persistedAppableSpecific接口,使用SiteLanguageAwareTit并将UUID翻译成slug。uuid和标题(我从中生成slug)都存储在外部api中。generate方法将uuid转换为slug,reslove方法将slug转换回uuid您能否解释/展示
customType
的具体功能?它实现了PersistedAppableSpecifice接口,使用SiteLanguageAwareTract并将uuid转换为slug。uuid和标题(我从中生成slug)都存储在外部api中。方法generate将uuid转换为slug,方法reslove将slug转换回uuid