Я создал простой DataObject:Как настроить CMS?
class Documents extends DataObject {
private static $db = array(
'DocType' => 'Text',
'ApprovalDate' => 'Date',
'PublicationDate' => 'Date',
'DocNumber' => 'Text',
'DocTitle' => 'Text'
);
private static $has_one = array(
'Member' => 'Member'
);
Дайте мне, пожалуйста, любая идея, как настроить мой ModelAdmin так, чтобы все пользователи могли только просматривать все объекты, и только владелец (пользователь с идентификатором == MemberID) может редактировать и удалить его объекты? В результате я хочу видеть такую картину: [https://yadi.sk/i/o5Nys_szqnPtQ ]
Я пытаюсь использовать такой код:
if (!(Member::currentUserID() == $Value_of_MemberID_Field )) {
$gridfieldConfig->removeComponentsByType('GridFieldDeleteAction')
->removeComponentsByType('GridFieldEditButton');
// add a view button
$gridfieldConfig
->addComponent(new GridFieldViewButton());
}
Как я могу получить $ Value_of_MemberID_Field в строке GridField?
Я считаю, что это полезно, чтобы упасть обратно в обработчик по умолчанию, если ваша проверка не пройдена, который, как правило, администратор может сделать это. например: 'return (Member :: currentUserID() == $ this-> MemberID) || parent :: canDelete ($ member); ' –
Спасибо, король и дан! Я добавил строки, которые вы посоветовали. Alsow Я добавил строки: 'public function canView ($ member = null) {return true; } 'и' public function canCreate ($ member = null) {return true; } 'Он начал работать так, как я хотел. Но теперь пользователи не могут создать новый документ: [Yandex] (https://yadi.sk/i/bBbnYwa3qtxVy) Когда я нажимаю кнопку создания, появляется всплывающее окно «Запрещено» – alex
Проблема решена в [stackoverflow] (http : //stackoverflow.com/questions/36616176/silverstripe-model-level-permissions-cancreate-doesnt-work/36621037#36621037) – alex