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

SilverStripe LeftModelAdmin列表视图未显示全部列问题排查

解决SilverStripe LeftModelAdmin仅显示一列的问题

嘿,我刚排查了你的代码,问题根源很明确——你把summary_fields放错位置啦!

在SilverStripe里,summary_fields是用来定义DataObject在列表视图中展示哪些字段的配置项,它应该直接写在你的数据模型类(也就是ContactFormSubmission)里,而不是ModelAdmin类中。你现在把它放在ContactFormSubmissionAdmin里,系统根本不会读取这个配置,所以只会默认显示一列内容。

修改后的正确代码:

1. 模型类(ContactFormSubmission.php)

把summary_fields移到这里:

namespace {
    use SilverStripe\ORM\DataObject;
    class ContactFormSubmission extends DataObject {
        private static $db = [
            'Name' => 'Varchar',
            'Email' => 'Varchar',
            'Message' => 'Text',
        ];

        // 这里才是summary_fields的正确位置
        private static $summary_fields = [
            'Name' => 'Name',
            'Email' => 'Email',
            'Message' => 'Message',
        ];
    }
}

2. ModelAdmin类(ContactFormSubmissionAdmin.php)

移除多余的summary_fields配置:

namespace {
    use SilverStripe\Admin\ModelAdmin;
    class ContactFormSubmissionAdmin extends ModelAdmin {
        private static $menu_title = 'Enquiries';
        private static $url_segment = 'enquiries';
        private static $managed_models = [
            ContactFormSubmission::class,
        ];
        // 删掉这里的summary_fields
    }
}

额外提醒:

修改完代码后,一定要访问你的站点的dev/build?flush=all页面(比如http://your-project-url.com/dev/build?flush=all)来清除缓存并重建配置,这样新的列表字段配置才能生效。

如果之后你需要在ModelAdmin里针对不同场景覆盖模型的默认列表字段,SilverStripe也支持通过getList()方法或者模型特定的配置来实现,但对于新手来说,先把配置放在模型里是最规范且简单的做法~

内容的提问来源于stack exchange,提问作者Wai Yan Hein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:28:33