0

我想创建一个标准的typo3 扩展,但是当我创建记录(或修改它)时,我想计算一些东西(在我的情况下,我想调用 Google Map API 以从给定地址获取坐标)。

所以我寻找一个钩子什么的。任何的想法?

4

3 回答 3

1

我的项目示例之一,可以帮助您在更改记录时挂钩后端。

在你的扩展文件 ext_localconf.php

// Hook for cancellation
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:femanager/class.tx_femanager_tcemainprocdm.php:tx_femanager_tcemainprocdm';

挂钩文件 class.tx_femanager_tcemainprocdm.php 您可以在其中执行脚本

class tx_femanager_tcemainprocdm{

    function processDatamap_postProcessFieldArray ($status, $table, $id, &$fieldArray, &$reference){
        // $status also called action like delete
        // $table - table name of excute backend action
        // $id - record UID
        // $fieldArray - fields of your table

        if($table = 'your_extension_table_name'){
            // your script  
        }
    }
}
于 2016-06-18T15:50:08.887 回答
0

也许这个答案对你有用。

将您的类注册为扩展中的数据处理钩子。这个“在命令映射的所有命令之后调用”被执行。也许你需要寻找一个更合适的。

然后在您注册的 Hook 中,即 'typo3conf/ext/your_ext/Classes/Hooks/AfterCreate.php' 中进行计算。希望这能让你走上正确的道路。

于 2016-06-17T14:18:36.167 回答
0

在我的特殊情况下,保存记录时无需计算坐标。所以我只是在控制器中使用了 listAction,检查坐标是否存在,如果没有调用 Google API(如果 Google API 没有返回坐标,则发送电子邮件)。

在另一种情况下,新记录来自前端插件,我不得不对这些数据做一些事情,我使用了控制器中的 createAction。(我不确定从后端创建记录时是否也调用了 createAction。)

于 2016-08-30T12:57:47.963 回答