Я хотел бы управлять различными отфильтрованными списками одного и того же объекта DataObject в ModelAdmin. У меня есть DataObject «Сообщение», который имеет 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;
}
}
Перегрузите getEditForm и определите новый FieldList, содержащий TabSet. Модуль комментариев SilverStripe предоставляет отличный пример этого в действии, показывая различные типы комментариев (спам и модерируемый) на отдельных вкладках в пределах того же ModelAdmin.
Посмотри на https://github.com/silverstripe/silverstripe-comments/blob/2.1/code/admin/CommentAdmin.php
Вы должны обработать его с помощью двух разных ModelAdmin, например, переименовав MessageAdmin в ReceivedMessageAdmin и создав новый 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;
}
}