我想创建一个标准的typo3 扩展,但是当我创建记录(或修改它)时,我想计算一些东西(在我的情况下,我想调用 Google Map API 以从给定地址获取坐标)。
所以我寻找一个钩子什么的。任何的想法?
我想创建一个标准的typo3 扩展,但是当我创建记录(或修改它)时,我想计算一些东西(在我的情况下,我想调用 Google Map API 以从给定地址获取坐标)。
所以我寻找一个钩子什么的。任何的想法?
我的项目示例之一,可以帮助您在更改记录时挂钩后端。
在你的扩展文件 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
}
}
}
在我的特殊情况下,保存记录时无需计算坐标。所以我只是在控制器中使用了 listAction,检查坐标是否存在,如果没有调用 Google API(如果 Google API 没有返回坐标,则发送电子邮件)。
在另一种情况下,新记录来自前端插件,我不得不对这些数据做一些事情,我使用了控制器中的 createAction。(我不确定从后端创建记录时是否也调用了 createAction。)