3

ModelAdmin で同じ DataObject のさまざまなフィルタリングされたリストを管理したいと考えています。SentbyID と SenttoID を持つ DataObject "Message" があります。ModelAdmin で 2 つのリストを管理したいと考えています。特定の SentbyID を持つすべてのメッセージを含む 1 つのリストと、特定の SenttoID を持つメッセージを含む 1 つのリスト。この 2 つのリストを「受信ボックス」と「送信ボックス」という別のタブで管理できますか? これどうやってするの?

私はこれまでのところこれを持っています:

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

たとえば、ReceivedMessageAdmin で MessageAdmin の名前を変更し、次のように新しい SentMessageAdmin を作成するなど、2 つの異なる ModelAdmin を介して処理する必要があります。

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 に答える