如何在TYPO3中使用Hook“ processDatamap_postProcFieldArray”

问题描述 投票:2回答:1

用例:当保存一个对象时(在后端,或者稍后在前端),我想在保存到数据库之前操作值。

问题:该文件似乎包含在内(如果我选择了错误的文件路径,则会在保存时显示错误),但似乎在保存对象时未执行该功能。

关于堆栈溢出有很多方法指南(大多数与T4.5相关)和相关问题,但似乎没有一个对我有用。

环境: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();
            }
        }
    }

当前状态:保存时,它不会崩溃或不显示任何内容,只是平滑地保存并忽略此功能。

任何人都可以告诉我我在这里缺少什么吗?

php typo3 extbase typo3-6.2.x
1个回答
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的那一刻,修剪,日期和数字等工作就已经完成了。

© www.soinside.com 2019 - 2024. All rights reserved.