Silverstripe 3.1-数据扩展中的BetterButtons自定义操作

Silverstripe 3.1-数据扩展中的BetterButtons自定义操作,silverstripe,Silverstripe,是否有方法将自定义按钮添加到具有更好按钮的成员对象?我正在用一个DataExtension扩展Member对象,我想在其中创建一个BetterButtons自定义操作 这是我的代码和收到的错误 private static $better_buttons_actions = array( 'createAccountPdf' ); public function getBetterButtonsActions(){ $fields = parent::g

是否有方法将自定义按钮添加到具有更好按钮的成员对象?我正在用一个DataExtension扩展Member对象,我想在其中创建一个BetterButtons自定义操作

这是我的代码和收到的错误

private static $better_buttons_actions = array(
        'createAccountPdf'
    );

    public function getBetterButtonsActions(){
    $fields = parent::getBetterButtonsActions();

        if( $this->owner->Accounts()->Count() > 0 ){
            $fields->push(BetterButtonCustomAction::create('createAccountPdf', 'Datenblatt erstellen')->setSuccessMessage('PDF Datenblatt mit Zugangsdaten wurde erstellt.'));
        }

        return $fields;
    }
错误:

Fatal error: Call to undefined method DataObject::getBetterButtonsActions() in /_website/_dev/mysite/code/Extensions/ClientMemberExtension.php on line 128

我还用$this->owner,Member:,DataObject::

代替了parent::getBetterButtonsActions(),这听起来很合理,因为扩展的父级没有名为“getBetterButtonsActions”的方法

从BetterButtonDataObject中的代码中,我看到DataExtension中已经有一个用于更新ButtonActions的钩子

尝试:


谢谢你的尝试,但还是不行。在代码中,我会收到“对非对象的成员函数push()的调用”,如果我添加“$fields=parent::getBetterButtonsActions();”或者使用updateBetterButtonsActions,我收到了“对未定义方法DataExtension::getBetterButtonsActions()的调用”哦,我的坏消息。我们只有变量$actions可用(在函数中定义),所以请尝试$actions->push。。。
public function updateBetterButtonsActions(&$actions) {
        if( $this->owner->Accounts()->Count() > 0 ){
            $actions->push(BetterButtonCustomAction::create('createAccountPdf', 'Datenblatt erstellen')->setSuccessMessage('PDF Datenblatt mit Zugangsdaten wurde erstellt.'));
        }
}