Extbase Hooks - 在创建记录时执行代码

时间:2016-06-17 13:17:40

标签: typo3 typo3-7.6.x

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

所以我搜索一个钩子或什么的。有什么想法吗?

3 个答案:

答案 0 :(得分: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  
        }
    }
}

答案 1 :(得分:0)

也许this answer对您有用。

在您的扩展程序中将您的课程注册为data handling hook。这个“在命令映射的所有命令之后被调用”被执行。也许你需要寻找一个更合适的。

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

答案 2 :(得分:0)

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

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