3

我想在 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;
    }

}
4

2 回答 2

2

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

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

于 2015-12-18T02:47:20.233 回答
1

您必须通过两个不同的 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;
    }

}
于 2015-12-17T13:31:53.943 回答