6

Silverstripe 3 で を管理DataobjectしているときModelAdminに、カスタム アクションのボタンをリスト ビューと編集ページに追加する方法を知りたいと思っていました。

以下のコードで s クラスItemRequestModelAdmin設定することで、アクションのボタンを編集ページに追加することができました。GridField

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か? 編集および削除ボタンの横に表示されるようにします。

ModelAdmin GridField アクション

4

1 に答える 1

6

GridFieldComponentこれを行うには、独自の実装GridField_ColumnProviderとを作成しますGridField_ActionProvider

あなたの場合、GridFieldDeleteActionクラスをほとんどコピーgetColumnContent()して自分GridField_FormActionで編集handleAction()し、編集して魔法をかけることができます。

于 2013-08-21T11:50:10.457 に答える