Как да използвате Hook processDatamap_postProcFieldArray в TYPO3

Случай на употреба: Когато записвам обект (в задната част, може би и в предната част по-късно), искам да манипулирам стойности, преди да запиша в база данни.

Проблем: Изглежда, че файлът се включва (показва грешка при запазване, ако избера грешен път към файла), но функцията изглежда не се изпълнява при запазване на обекта.

Има много инструкции (повечето от тях свързани с T4.5) и свързани въпроси в stackoverflow, но никой от тях не изглежда да работи за мен.

Околна среда: 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'; 

АКТУАЛИЗИРАНО за справка: Този последен ред трябваше да бъде променен, за да реши проблема

/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();
            }
        }
    }

Текущо състояние: При запазване не се срива или не показва нищо, просто запазва плавно и игнорира тази функция.

Може ли някой да ми покаже какво пропускам тук?


person Hafenkranich    schedule 03.06.2015    source източник


Отговори (1)


Решено:

в моя 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 въвеждаме.

person Hafenkranich    schedule 03.06.2015
comment
Ако структурата на вашето разширение отговаря на предложеното по подразбиране (така че във вашия пример вашият клас ще бъде на EXT:yourext/Classes/Hooks/GetGeoCodesHook.php), изобщо не е необходимо да посочвате пътя до куката, но може да разчитате на автоматично зареждане. - person lorenz; 10.06.2015
comment
Благодаря за този коментар @lorenz - person Hafenkranich; 11.06.2015