Silverstripe 3에서 Dataobject
을 ModelAdmin
으로 관리 할 때 목록보기 및 편집 페이지에 사용자 지정 동작을위한 단추를 추가하는 방법이 궁금합니다.ModelAdmin에 사용자 지정 동작을위한 단추 추가
class MyModelAdmin extends ModelAdmin
{
//...
public function getEditForm($id = null, $fields = null)
{
$form = parent::getEditForm($id, $fields);
$form
->Fields()
->fieldByName($this->sanitiseClassName($this->modelClass))
->getConfig()
->getComponentByType('GridFieldDetailForm')
->setItemRequestClass('MyModelGridFieldDetailForm_ItemRequest');
return $form;
}
}
MyModelGridFieldDetailForm_ItemRequest.php
class MyModelGridFieldDetailForm_ItemRequest extends GridFieldDetailForm_ItemRequest
{
function ItemEditForm()
{
$form = parent::ItemEditForm();
$formActions = $form->Actions();
$button = FormAction::create('myAction');
$button->setTitle('My Custom Action');
$button->addExtraClass('ss-ui-action-constructive');
$formActions->push($button);
$form->setActions($formActions);
return $form;
}
function myAction($data, $form)
{
//do things
$form->sessionMessage('My Action has been successful', 'good');
if ($this->gridField->getList()->byId($this->record->ID)) {
return $this->edit(Controller::curr()->getRequest());
} else {
$noActionURL = Controller::curr()->removeAction($data['url']);
Controller::curr()->getRequest()->addHeader('X-Pjax', 'Content');
return Controller::curr()->redirect($noActionURL, 302);
}
}
}
:
나는 아래의 코드로 ModelAdmin
의 GridField
클래스에 ItemRequest
을 설정하여 편집 페이지에 액션 버튼을 추가하기 위해 관리했습니다
질문은 다음과 같습니다.
같은 작업에 대한 버튼 ModelAdmin
GridField
Listview? 는 편집 옆에 표시되는 버튼을 삭제 그래야 :
감사합니다. 나는 getCMSActions()와 같은 몇 가지 마법 메서드를 사용하기를 바랬습니다. 두 영역을 모두 바꾸려면 우선 재정의해야했습니다 ... –