TYPO3 通过 pid 防止级联删除

TYPO3 Prevent cascade deletion by pid

我正在使用 TYPO3 7.x LTS。我为它添加了带有 TCA 条目的自定义 table。此 table 的每条记录都有一个 pid 设置到相应的页面。 然而,当页面被删除时,TYPO3 会自动删除 my table 中与该页面相关的记录。我想这很好,但我处于无法丢失这些记录的情况。

有什么好的方法可以告诉 TYPO3 不要从我的 table 页面中删除记录?我研究了 TCA 参考文档,但在那里什么也没找到。

我正在寻找类似 enableCascadingDelete 选项的东西,它可用于 inline 类型的字段。

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

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

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

如您所知,只有 'enableCascadingDelete' 用于内联。

此处页面的概念不同:在 TYPO3 中,所有内容 都位于某个页面上。这意味着如果一个页面被删除,这个页面上的记录也必须被删除。即使您不删除受影响的记录,您也无法再在后台编辑这条记录。这就是如果您删除一个页面,该页面上的记录也会被软删除或硬删除的原因之一。

这基本上意味着:如果您有一些带有 TCA 的数据库 table 可以编辑 后台属于某个页面,删除页面也会被删除

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