TYPO3 TCA выполняет хук после сохранения объекта в бэкэнде
Я хочу манипулировать некоторыми значениями и выполнять пользовательскую функцию, если объект сохранен в бэкэнде. Я нашел в своем поиске Google, что я должен указать это в своем 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
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';
Я не понимаю, что я я поступаю неправильно. У кого-нибудь есть предложения?
Решение для справки: Благодаря предложению шутника я посмотрел, какие и как загружаются другие крючки в "Конфигурации" модуля BE. Я увидел, что мой крючок выглядит иначе, чем другие, поэтому я проверил, как определен крючок powermail (это еще одно расширение, которое я использую), и со следующими изменениями крючок, наконец, работает:
$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';
1 answers
Зарегистрируйте свой класс крючков в локальной конфигурации(ext_localconf.php ):
$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();
}
}