2015-06-03 27 views
2

使用案例: 當保存一個對象(在後臺,也許前端太后)我想保存到數據庫之前,操作值。如何使用掛鉤「processDatamap_postProcFieldArray」在TYPO3 6.x中

問題: 文件似乎得到包括(顯示在保存,如果我選擇了錯誤的文件路徑錯誤),但功能似乎並不保存對象的要執行上。

有很多關於stackoverflow的how-tos(大部分是T4.5相關的)和相關的問題,但是他們都沒有爲我工作。

Environement: TYPO3 6.2,Extbase

簡約測試用例:

/ext/navolspmanager/ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 
'EXT:navolspmanager/Classes/Hooks/GetGeoCodesHook.php:\NachVORNE\Navolspmanager\Hooks\GetGeoCodesHook'; 

UPADTED供參考:這最後線必須改變以解決問題

/ext/navolspmanager/Classes/Hooks/GetGeoCodesHook.php

<?php 
    namespace NachVORNE\Navolspmanager\Hooks; 
    class GetGeoCodesHook { 
     public function processDatamap_preProcessFieldArray(array $fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) { 
      if ($table == 'tx_navolspmanager_domain_model_dataset') { 
       $fieldArray['geolng'] = 01.001; // for testing purposes 
       var_dump($fieldArray); die(); 
      } 
      else{ 
       var_dump($table); die(); 
      } 
     } 
    } 

現狀: 保存時它不會崩潰或顯示任何東西,只是順手保存並忽略這個功能。

任何人都可以告訴我我在這裏失蹤了嗎?

回答

0

解決:

在我ext_localconf.php只是有一個 '/' 的命名空間中缺少的...

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] =   
'EXT:navolspmanager/Classes/Hooks/GetGeoCodesHook.php:\NachVORNE\Navolspmanager\Hooks\GetGeoCodesHook'; 

改進:

當一個更新根據其他用戶輸入的字段,我們應該使用'processDatamap_postProcessFieldArray'函數。這種方式修剪,日期和數量的東西等已經完成了我們grep的輸入。

+1

如果你的擴展結構符合建議的默認值(所以在你的例子中,你的類將在'EXT:yourext/Classes/Hooks/GetGeoCodesHook.php'),你不需要指出鉤子的路徑所有這些都可以依靠自動加載。 – lorenz

+0

感謝您的評論@lorenz – Hafenkranich