复制页面时不要复制域模型

时间:2013-03-18 15:04:15

标签: typo3 domain-model extbase

我们有一个Extbase扩展,它有一个与tt_content元素相关的域模型。删除页面或内容元素时,也会删除关联的所有域模型项。这很好,我们想要这种行为(否则我们会留下孤儿)。

但我们的客户希望在复制页面时不会复制此域模型中的项目。有没有办法告诉TYPO3在复制操作期间不复制此扩展的域模型项?

编辑:我们在此项目中使用TYPO3 4.5。

1 个答案:

答案 0 :(得分:0)

处理此问题的唯一方法是将模型表添加到“不允许”部分,但这也将删除在任何地方修改后端数据集的功能。

这就是为什么(在TYPO3 6.0中):

文件:方法:\ TYPO3 \ CMS \ Core \ DataHandling \ DataHandler :: copyPages

$copyTablesArray = $this->admin ? $this->compileAdminTables() : explode(',', $this->BE_USER->groupData['tables_modify']);
// If not all tables are allowed then make a list of allowed tables: That is the tables that figure in both allowed tables AND the copyTable-list
if (!strstr($this->copyWhichTables, '*')) {
    foreach ($copyTablesArray as $k => $table) {
        // Pages are always going...
        if (!$table || !\TYPO3\CMS\Core\Utility\GeneralUtility::inList(($this->copyWhichTables . ',pages'), $table)) {
            unset($copyTablesArray[$k]);
        }
    }
}

将复制$copyTablesArray中设置的所有表格。如果当前登录的用户不是管理员,则在$this->BE_USER->groupData['tables_modify']中设置它们。

也许添加此方法的替代实现可以处理这个问题,但这不是一个非常简单的方法。