Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用钩子;processDatamap“postProcFieldArray”;用打字法3_Php_Typo3_Extbase_Typo3 6.2.x - Fatal编程技术网

Php 如何使用钩子;processDatamap“postProcFieldArray”;用打字法3

Php 如何使用钩子;processDatamap“postProcFieldArray”;用打字法3,php,typo3,extbase,typo3-6.2.x,Php,Typo3,Extbase,Typo3 6.2.x,用例: 在保存对象时(在后端,可能在前端太晚),我希望在保存到数据库之前操作值 问题: 文件似乎被包括在内(如果我选择了错误的文件路径,则在保存时显示错误),但在保存对象时似乎没有执行该函数 有很多关于stackoverflow的how-tos(大多数与T4.5相关)和相关问题,但似乎没有一个适合我 环境: 类型3 6.2,Extbase 最低限度测试用例: /ext/navolspmanager/ext_localconf.php $GLOBALS['TYPO3_CONF_VARS']['SC

用例: 在保存对象时(在后端,可能在前端太晚),我希望在保存到数据库之前操作值

问题: 文件似乎被包括在内(如果我选择了错误的文件路径,则在保存时显示错误),但在保存对象时似乎没有执行该函数

有很多关于stackoverflow的how-tos(大多数与T4.5相关)和相关问题,但似乎没有一个适合我

环境: 类型3 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/getgeocodeshake.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();
            }
        }
    }

已解决:

在我的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\u postProcessFieldArray”函数。这样,我们在grep输入时就已经完成了trim、date和number等操作。

如果您的扩展结构符合建议的默认值(因此在您的示例中,您的类将位于
EXT:yourext/Classes/Hooks/getgeocodeshake.php
),你根本不需要指明钩子的路径,但可以依赖于自动加载。谢谢@lorenz的评论