You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OctoberCMS是否具备软删除表单/列表功能?求推荐实现方案

好问题!OctoberCMS 默认并没有内置专门针对软删除的表单/列表行为,但官方生态里有成熟的解决方案,也有规范的自定义实现方式,结合你已经手动完成的恢复按钮、筛选功能,我整理了几个靠谱的方向:

一、官方推荐的插件:RainLab.Trash

这是 OctoberCMS 生态中最受欢迎的软删除插件,完全封装了软删除的全套逻辑,能帮你省去大量重复开发:

  • 自动给目标模型添加 deleted_at 字段和对应的 Laravel SoftDeletes trait
  • 后台列表页自动集成「已删除记录」筛选器,以及恢复、永久删除的批量操作按钮
  • 表单页会自动识别已删除记录并展示状态提示,无需你手动编写 Ajax 控制器和筛选配置
  • 支持关联模型的软删除联动处理
    你只需要在模型设置中启用插件的特性,就能快速替换掉自己手动实现的部分,代码更规范也更易维护。
二、自定义实现的官方最佳实践(适合个性化需求)

如果你想继续基于现有代码优化,官方文档推荐遵循 Laravel + OctoberCMS 的融合规范:

  1. 模型层基础配置:直接复用 Laravel 的 SoftDeletes trait(OctoberCMS 基于 Laravel,完全兼容):
    use Illuminate\Database\Eloquent\SoftDeletes;
    
    class YourTargetModel extends Model
    {
        use SoftDeletes;
    
        // 把 deleted_at 加入日期字段列表
        protected $dates = ['deleted_at'];
    }
    
  2. 列表行为扩展:
    • 在列表配置文件(config_list.yaml)中添加软删除筛选器:
      scopes:
          show_deleted:
              label: 显示已删除记录
              type: checkbox
              conditions: deleted_at is not null
      
    • 添加批量操作按钮到列表配置:
      bulkActions:
          restore_selected:
              label: 恢复选中记录
              icon: icon-refresh
              handler: onRestoreBulk
          force_delete_selected:
              label: 永久删除选中记录
              icon: icon-trash
              handler: onForceDeleteBulk
      
  3. 控制器 Ajax 方法规范写法:官方推荐的批量恢复示例:
    public function onRestoreBulk()
    {
        $selectedIds = post('checked');
        
        if (empty($selectedIds)) {
            $this->flashError('请先选择要恢复的记录');
            return;
        }
    
        YourTargetModel::onlyTrashed()
            ->whereIn('id', $selectedIds)
            ->restore();
    
        $this->flashSuccess('已成功恢复选中记录');
        return $this->listRefresh();
    }
    
三、官方示例参考

OctoberCMS 官方文档中针对「模型扩展」和「后台列表自定义」的章节,有专门基于 Laravel 软删除特性的示例片段,核心思路就是利用框架原生能力结合 October 的后台行为系统,不需要额外造轮子。

内容的提问来源于stack exchange,提问作者Wreigh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:28:07