Silverstripe 3.2 - 如何在不同的选项卡中管理ModelAdmin中相同Dataobject的不同列表

时间:2015-12-16 13:30:05

标签: php silverstripe data-objects modeladmin

我想在ModelAdmin中管理同一DataObject的不同筛选列表。我有DataObject“Message”,它有SentbyID和SenttoID。在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;
    }

}

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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;
    }

}