【发布时间】:2016-12-01 15:19:01
【问题描述】:
这似乎是 SS 中的一个困难领域。
我正在尝试使用以下代码通过代码删除页面:$page->doArchive();
但是,这会在 SiteTree 菜单中留下页面的幽灵,并带有“恢复草稿”选项。然而,这破坏了我的模块的功能,根本不需要。
如何完全删除页面,使用户无法看到/恢复它?
编辑:也试过了:
DB::query("DELETE FROM SomePage WHERE ForeignID = {$this->ID}");
DB::query("DELETE FROM SomePage_Live WHERE ForeignID = {$this->ID}");
DB::query("DELETE FROM SomePage_versions WHERE ForeignID = {$this->ID}");
甚至手动清除了 MySQL 表 (phpmyadmin) 并且 STILL 在那里显示了带有恢复草稿选项的页面(在菜单中被划掉)。
EDIT2:这段乱七八糟的代码会删除所有记录,并取消恢复草稿的能力。但是,已删除的页面图标仍会显示在站点树中,并且会在刷新后消失。
DB::query("DELETE FROM SomePage WHERE ForeignID = {$this->ID}");
DB::query("DELETE FROM SomePage_Live WHERE ForeignID = {$this->ID}");
DB::query("DELETE FROM SomePage_versions WHERE ForeignID = {$this->ID}");
DB::query("DELETE FROM SomePage_versions WHERE ForeignID = 0");
DB::query("DELETE FROM SiteTree WHERE ID = {$pageID}");
DB::query("DELETE FROM SiteTree_Live WHERE ID = {$pageID}");
DB::query("DELETE FROM SiteTree_versions WHERE RecordID = {$pageID}");
问题:如何防止被删除的页面图标“闪退”?
【问题讨论】:
-
我这样做的唯一方法是使用原始查询。您需要从 PageClassName、PageClassName_Live 和 PageClassName_versions 中删除记录。必须有更好的方法来做到这一点。
-
仍然留下“恢复草稿”选项,莫名其妙..
-
SomePage是SiteTree的子类吗?如果是,那么您删除它的方式是错误的……您需要完全按照SiteTree本身删除这些记录,例如。DELETE FROM SomePage WHERE ID = {$pageID}
标签: php silverstripe