我们有一个Extbase扩展,它有一个与tt_content元素相关的域模型。删除页面或内容元素时,也会删除关联的所有域模型项。这很好,我们想要这种行为(否则我们会留下孤儿)。
但我们的客户希望在复制页面时不会复制此域模型中的项目。有没有办法告诉TYPO3在复制操作期间不复制此扩展的域模型项?
编辑:我们在此项目中使用TYPO3 4.5。
答案 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']
中设置它们。
也许添加此方法的替代实现可以处理这个问题,但这不是一个非常简单的方法。