我想在ModelAdmin中管理同一DataObject的不同过滤列表。我有一个DataObject"Message",它有一个SentbyID和一个SenttoID。在ModelAdmin中,我想管理两个列表。一个列表包含具有特定SentbyID的所有邮件,另一个列表则包含具有特定sentoID的邮件。我可以在不同的选项卡中管理这两个列表吗,例如"收件箱"one_answers"发件箱"?我该怎么做?
到目前为止,我有这个:
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;
}
}
重载getEditForm并定义一个包含TabSet的新FieldList。SilverStripe Comments模块通过在同一ModelAdmin中的不同选项卡中显示不同类型的评论(Spam与Moderated),提供了一个很好的例子。
看看https://github.com/silverstripe/silverstripe-comments/blob/2.1/code/admin/CommentAdmin.php
您必须通过两个不同的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;
}
}