TYPO3通过pid防止级联删除

时间:2018-01-17 12:08:28

标签: typo3 typo3-7.6.x

我使用的是TYPO3 7.x LTS。我已经为它添加了一个带有TCA条目的自定义表。此表的每条记录都设置为相应页面的pid。 但是,当删除页面时,TYPO3会自动删除我的表中与该页面关联的记录。我想这很好,但是在我无法放弃这些记录的情况下。

有没有一种很好的方法告诉TYPO3不要删除我的表中的记录和页面?我研究过TCA参考文档,但我没有发现任何内容。

我正在寻找可用于enableCascadingDelete类型字段的inline选项。

我知道我可以定义一个delete列,该列将被更新而不是删除记录,但此解决方案并不优雅。

我能想到的另一个不优雅的解决方案是在桌面上设置rootLevel => 1并引入另一个字段,例如page_id或其他字段。

我的问题有优雅的解决方案吗?

1 个答案:

答案 0 :(得分:2)

正如您已经发现的那样,只有内联的'enableCascadingDelete'。

页面的概念在这里有所不同:在TYPO3 中,所有都位于某个页面上。这意味着如果删除页面,也必须删除此页面上的记录。即使您不删除受影响的记录,也无法再在后端编辑此记录。这就是为什么如果你删除一个页面,这个页面上的记录也会被软或硬删除。

这基本上意味着:如果你有一些可以编辑的TCA数据库表 在后端,它属于某个页面,因此如果删除页面将被删除。

也许重新考虑一下你的记录存储概念:一个随意的用例就是 在不同的页面上有记录(通常是Folder类型的页面)。这是一个很好的做法,例如“新闻”记录,“前端用户”等。例如,介绍包就是这样的。然后,在您的主要网页上,在前端渲染的pagetree有插件,告诉他们应该在哪里找到他们的记录。许多插件(读取:所有好的插件)然后接受存储文件夹配置。如果您然后以合理的方式设置访问权限,您可以阻止非管理员用户删除您的记录存储文件夹,同时他们仍然可以操纵(例如删除)后端的网页和您的记录(例如新闻)不会随页面一起删除,因为它们位于不同的位置。