使用 javascript 在 ModelAdmin 中显示隐藏的 DataObject 列

Show hide DataObject columns within ModelAdmin with javascript

用户对在同一个 ModelAdmin 中为同一个 DataObject 显示的列有许多不同的偏好,并希望在他们自己的会话中控制它们。

给定以下数据对象...

class MyDataObject extends DataObject {
    static $db = array(
        'Name'      => 'Varchar',
        'Date'      => 'SS_DateTime',
        'Number'    => 'Decimal(8,2)',
    );
    public static $summary_fields = array(
        'Name',
        'Date',
        'Number'
    );
}

...以及以下 ModelAdmin...

class MyModelAdmin extends ModelAdmin {
    static $mangaged_models = array(
    'MyDataObject',
    );  
    static $url_segment = 'mymodeladmin';
    static $menu_title = 'MyModelAdmin';
    static $menu_priority = 9;
}

...是否有直接的 javascript 唯一解决方案(我想可以将选择的列存储在 cookie 中)或更多程序化的解决方案(即 php)来控制列基于每个用户 - 允许每个用户 select 他们想要的列并且它会在会话之间记住它?

非常感谢任何帮助。

如评论中所述,您可以查看此模块,它应该会为您提供所需的功能。

https://github.com/smindel/silverstripe-GridFieldAddOns/blob/master/docs/en/GridFieldUserColumns.md

来自文档:

只需将以下代码添加到您的 mysite/_config.php

的末尾
Member::add_extension('GridFieldUserColumnsExtension');
Object::useCustomClass('GridFieldConfig_RecordEditor', 'GridFieldConfig_ExtendedRecordEditor');
Object::useCustomClass('GridFieldConfig_RelationEditor', 'GridFieldConfig_ExtendedRelationEditor');