2016-04-08 3 views
1

Я создал простой 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?

ответ

3

Возможно, вам будут предоставлены следующие документы: https://docs.silverstripe.org/en/3.3/developer_guides/model/permissions/.

Для примера, это может выглядеть примерно так:

public function canEdit($member = null) { 
    return (Member::currentUserID() == $this->MemberID); 
} 

public function canDelete($member = null) { 
    return (Member::currentUserID() == $this->MemberID); 
} 
+0

Я считаю, что это полезно, чтобы упасть обратно в обработчик по умолчанию, если ваша проверка не пройдена, который, как правило, администратор может сделать это. например: 'return (Member :: currentUserID() == $ this-> MemberID) || parent :: canDelete ($ member); ' –

+0

Спасибо, король и дан! Я добавил строки, которые вы посоветовали. Alsow Я добавил строки: 'public function canView ($ member = null) {return true; } 'и' public function canCreate ($ member = null) {return true; } 'Он начал работать так, как я хотел. Но теперь пользователи не могут создать новый документ: [Yandex] (https://yadi.sk/i/bBbnYwa3qtxVy) Когда я нажимаю кнопку создания, появляется всплывающее окно «Запрещено» – alex

+0

Проблема решена в [stackoverflow] (http : //stackoverflow.com/questions/36616176/silverstripe-model-level-permissions-cancreate-doesnt-work/36621037#36621037) – alex

Смежные вопросы