gpt4 book ai didi

php - TYPO3 TCA 在后端保存对象后执行 Hook

转载 作者:行者123 更新时间:2023-12-01 13:37:28 24 4
gpt4 key购买 nike

如果通过后端保存对象,我想操作一些值并执行自定义函数。我通过我的谷歌搜索发现我必须在我的 中指定这个。 ext_localconfphp :

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['extkey'] = 'Vendor\\Extension\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['extkey'] = 'Vendor\\Extension\\Hook\\TCEmainHook';
此外,我在我的扩展程序 中创建了以下类/Classes/Hook/TCEmainHook.php
<?php
namespace Vendor\Extension\Hook;

class TCEmainHook {
public function processCmdmap_postProcess(
$command, $table, $id, $value,
TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
echo '<pre>';
var_dump($command);
echo '<pre>';
die();
}
}
但无论我尝试以下哪种选项,在保存对象后都会得到一个空的后端框架:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['NXS\\NxsReferenzen\\Hook\\TCEmainHook'] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][''] = 'NXS\\NxsReferenzen\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][''] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php:\NXS\\NxsReferenzen\\Hook\\TCEmainHook';
我不明白我做错了什么。有人有什么建议吗?
解决方案引用:
感谢 jokumer 的建议,我在 BE 模块“配置”中查找了哪些以及如何加载其他钩子(Hook)。我看到我的钩子(Hook)看起来与其他钩子(Hook)不同,所以我检查了 powermail 钩子(Hook)是如何定义的(这是我正在使用的另一个扩展),并且通过以下更改,钩子(Hook)终于可以工作了:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php:NXS\\NxsReferenzen\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][] = 'EXT:nxs_referenzen/Classes/Hook/TCEmainHook.php:NXS\\NxsReferenzen\\Hook\\TCEmainHook';

最佳答案

在本地配置(ext_localconf.php)中注册你的钩子(Hook)类:

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][''] = 'NXS\\NxsReferenzen\\Hook\\TCEmainHook';
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][''] = 'NXS\\NxsReferenzen\\Hook\\TCEmainHook';

确保你的钩子(Hook)类有命名空间声明:
<?php
namespace NXS\NxsReferenzen\Hook;

class TCEmainHook {
public function processCmdmap_postProcess($command, $table, $id, $value, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
echo '<pre>';
var_dump($command);
echo '<pre>';
die();
}
}

关于php - TYPO3 TCA 在后端保存对象后执行 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com