2016-06-17 43 views
0

我想創建一個標準的typo3擴展,但是當我創建一個記錄(或修改它)時,我想計算一些東西(在我的情況下,我想調用Google Map API來獲取座標來自給定的地址)。Extbase掛鉤 - 創建記錄時執行代碼

所以我搜索一個鉤或東西。任何想法?

+1

您是指在您的extbase擴展或後端的任何內容記錄中創建記錄之後的意思嗎? –

+0

@TheF在我的擴展程序的後端創建內容記錄後。 (就像你創建的任何內容記錄,但只是我的擴展的記錄類型) – nbar

回答

0

在我有特殊情況記錄保存時無需計算座標。所以我只是在控制器中使用了listAction,檢查座標是否存在,是否調用Google API(如果Google API沒有給出座標,則發送電子郵件)。

在另一個新記錄來自前端插件的情況下,我必須對這些數據做些什麼,我在Controller中使用了createAction。 (我不確定在從後端創建記錄時是否也調用了createAction。)

0

也許this answer對你很有用。

在您的擴展中註冊您的課程作爲data handling hook。這個「在命令映射的所有命令之後被調用」被執行。也許你需要尋找一個更合適的。

然後在你的註冊Hook中,即'typo3conf/ext/your_ext/Classes/Hooks/AfterCreate.php'做你的計算。希望這能讓你走上正軌。

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 
     } 
    } 
}