我想创建一个标准的typo3扩展,但是当我创建一个记录(或修改它)时,我想计算一些东西(在我的情况下,我想调用Google Map API来获取给定地址的坐标)。
所以我搜索一个钩子或什么的。有什么想法吗?
答案 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。)