Как использовать хук 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». Таким образом, обрезка, дата, число и т. д. уже сделаны в тот момент, когда мы собираем ввод.

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