【问题标题】:Silverstripe 3.2 - How to manage different lists of the same Dataobjects in ModelAdmin in different tabsSilverstripe 3.2 - 如何在不同选项卡中管理 ModelAdmin 中相同数据对象的不同列表
【发布时间】:2016-03-22 16:03:25
【问题描述】:

我想在 ModelAdmin 中管理同一 DataObject 的不同过滤列表。我有具有 SentbyID 和 SenttoID 的 DataObject“消息”。在 ModelAdmin 我想管理两个列表。一个包含具有特定 SentbyID 的所有消息的列表和一个包含具有特定 SenttoID 的消息的列表。我可以在不同的选项卡中管理这两个列表吗? “收件箱”和“发件箱”?我怎样才能做到这一点?

到目前为止我有这个:

class MessageAdmin extends ModelAdmin {

    private static $menu_title = 'Messages';

    private static $url_segment = 'messages';

    private static $managed_models = array (
        'Message'
    );

    public function getList() {
        $currMember = Member::currentUserID();
        $list = Message::get()->filter(array('SenttoID' => $currMember));
        return $list;
    }

}

【问题讨论】:

    标签: php silverstripe data-objects modeladmin


    【解决方案1】:

    重载 getEditForm 并定义一个包含 TabSet 的新 FieldList。 SilverStripe 评论模块通过在同一个 ModelAdmin 内的不同选项卡中显示不同类型的 cmets(垃圾邮件与审核),提供了一个很好的实际示例。

    看看https://github.com/silverstripe/silverstripe-comments/blob/2.1/code/admin/CommentAdmin.php

    【讨论】:

    • 谢谢!这正是我一直在寻找的。完美运行!
    • Comments 不使用 ModelAdmin,但它是 LeftAndMain 的子类。如果您不需要太多 ModelAdmin 魔法,这是一个不错的选择。
    【解决方案2】:

    您必须通过两个不同的 ModelAdmin 来处理它,例如在 ReceivedMessageAdmin 中重命名 MessageAdmin,并创建一个全新的 SentMessageAdmin,如下所示:

    class SentMessageAdmin extends ModelAdmin {
    
        private static $menu_title = 'Sent Messages';
    
        private static $url_segment = 'sent-messages';
    
        private static $managed_models = array (
            'Message'
        );
    
        public function getList() {
            $currMember = Member::currentUserID();
            $list = Message::get()->filter(array('SentbyID' => $currMember));
            return $list;
        }
    
    }
    

    【讨论】:

    • 那么没有办法在一个ModelAdmin中进行管理吗?我希望避免 CMS 左侧边栏中的菜单项过多...
    • 也许你可以扩展 ModelAdmin 功能,但我认为这将是一个矫枉过正的任务......
    • 感谢您的支持!我使用下面的 Comments 模块示例对其进行了管理。使用 ModelAdmin 是不可能的,但使用扩展 LeftAndMain 和自定义 getEditForm 是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    相关资源
    最近更新 更多