用于创建父/子记录关系的DataHandler结构

时间:2017-03-29 09:24:47

标签: typo3 datahandler

我尝试使用TYPO3的DataHandler数据结构(使用TYPO3 v7测试)创建嵌套记录结构。但是,关系不会按预期创建。请考虑以下数据结构:

        $data = array(
                'sys_category' =>
                        array(
                                'NEW_1' =>
                                        array(
                                                'title' => 'Category 1',
                                                'pid' => $pid,
                                        ),
                                'NEW_2' =>
                                        array(
                                                'title' => 'Category 3',
                                                'pid' => $pid,
                                        ),
                                'NEW_3' =>
                                        array(
                                                'title' => 'Category 2',
                                                'pid' => $pid,
                                        ),
                                'NEW_4' =>
                                        array(
                                                'title' => 'Category 1.1',
                                                'pid' => $pid,
                                                'parent' => 'NEW_1',
                                        ),
                                'NEW_5' =>
                                        array(
                                                'title' => 'Category 1.2',
                                                'pid' => $pid,
                                                'parent' => 'NEW_1',
                                        ),
                                'NEW_6' =>
                                        array(
                                                'title' => 'Category 3.1',
                                                'pid' => $pid,
                                                'parent' => 'NEW_2',
                                        ),
                        ),
        );

这在数据库中给出了以下结果:

uid title           parent
1   Category 1      0
2   Category 3      0
3   Category 2      0
4   Category 1.1    0
5   Category 1.2    0
6   Category 3.1    0

注意" 0"所有"父母的价值"领域。为什么" NEW _ *"值不会被解释为"父母"在数据结构中设置的字段?

2 个答案:

答案 0 :(得分:1)

如上述评论中所述,情况在TYPO3 6.2和7.6之间发生了变化。区别在于\TYPO3\CMS\Core\DataHandling\DataHandler::processRemapStack()。从TYPO3 7.6开始,它会检查" NEW *"占位符包含低破折号(_)。如果是,则占位符在该字符上拆分,并且字符串的第一部分被视为相关的表名。

这是以前的变化,低速冲刺没有特殊含义。实际上,文档提到了使用低速划线的示例。

因此,只需从所有占位符中删除低速划线,上述代码就可以正常工作。

答案 1 :(得分:0)

据我所知,只检查了pid值的“NEW”关键字。 但是你可以使用一些包含的钩子来启用“父”的分配。

编辑: 我指的是TYPO3 \ CMS \ Core \ DataHandling \ DataHandler :: process_datamap()