我需要你的帮助。我创建了我的扩展。我可以在后端添加条目。我跟着钩子:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['fefiles'] =
\Istar\Fefiles\Hooks\DataHandler::class;
我的数据处理程序文件:
class DataHandler{
public function processDatamap_afterDatabaseOperations(
$status,
$table,
$recordUid,
array $fields,
\TYPO3\CMS\Core\DataHandling\DataHandler $parentObject
) {
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/666.txt', 'w');
fwrite($fp, print_r(get_defined_vars(), true));
fclose($fp);
}
public function processDatamap_preProcessFieldArray(&$fieldArray, $table, $id, $parentObject)
{
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/666.txt', 'w');
fwrite($fp, print_r(get_defined_vars(), true));
fclose($fp);
}
public function processCmdmap_preProcess($command, &$table, $id, $value, $parentObject)
{
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/666.txt', 'w');
fwrite($fp, print_r(get_defined_vars(), true));
fclose($fp);
}
}
我想收到有关更新条目的数据。(uid和其他)。 但是当我更新条目时,没有任何反应。正如您所见,我尝试在我的代码中创建文件。我这样做是为了测试它并接收数据。什么都没发生。当我将create file的代码添加到方法__construct时,就创建了该文件。
我希望你理解我的问题。有人,请帮帮我。
答案 0 :(得分:2)
如果你想要挂钩processDatamap_afterDatabaseOperations
和processDatamap_preProcessFieldArray
,你必须注册,作为名称的前缀(processDatamap_*
),你的班级:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][]
而不是
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][]
<强>更新强> 它可能看起来像这样。将它们注册到两个案例中以获得所有钩子:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = \Istar\Fefiles\Hooks\DataHandler::class;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass'][] = \Istar\Fefiles\Hooks\DataHandler::class;