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

Typo3 复制页面时不要复制域模型,typo3,domain-model,extbase,Typo3,Domain Model,Extbase,我们有一个Extbase扩展,它有一个与tt_内容元素关联的域模型。当我们删除页面或内容元素时,所有关联的域模型项也将被删除。这是好的,我们想要这种行为(否则我们会留下孤儿) 但是我们的客户希望在复制页面时不要复制此域模型中的项目。有没有办法告诉TYPO3在复制操作期间不要复制此扩展的域模型项 编辑:我们在这个项目中使用TYPO3 4.5。处理这个问题的唯一方法是将模型的表添加到“不允许”部分,但这也将删除修改所有后端数据集的功能 以下是原因(在TYPO3 6.0中): 文件:方法:\TYPO3

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

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


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

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

以下是原因(在TYPO3 6.0中):

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

$copytablearray=$this->admin$this->compiledMinTables():分解(“,”,$this->BE\u USER->groupData['tables\u modify']);
//如果不是所有的表都被允许,那么就列出一个允许的表:即在允许的表和copyTable列表中出现的表
如果(!strstr($this->copyWhichTables,'*')){
foreach($copyTablesArray作为$k=>$table){
//页面总是在继续。。。
if(!$table | |!\TYPO3\CMS\Core\Utility\GeneralUtility::inList($this->copyWhichTables.',pages'),$table)){
未设置($copyTablesArray[$k]);
}
}
}
将复制在
$copytablearray
中设置的所有表。如果当前登录的用户不是管理员,则在
$this->BE\u USER->groupData['tables\u modify']
中设置它们


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

在Rails中,我会在模型中创建后挂钩或对象观察程序中执行此操作,该对象观察程序在复制时触发,只需在对象持久化之前清除has\u many关联即可。TYPO3中是否有类似的内容?问题中的TYPO3版本是4.5,而不是6.0。我已经发现了一些不同之处。顺便说一句:这些数据集不是在后端修改的,而是被代理到另一个处理这些数据集编辑的框架,因为TYPO3太慢了(每个后端页面加载30秒或更多)。。。