【问题标题】:Silverstripe 3.1 - BetterButtons Custom Action in DataExtensionSilverstripe 3.1 - DataExtension 中的 BetterButtons 自定义操作
【发布时间】:2014-10-02 20:32:00
【问题描述】:

有没有办法使用 Unclecheese BetterButtons 向成员对象添加自定义按钮?我正在使用要创建 BetterButtons 自定义操作的 DataExtension 扩展成员对象。

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

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

代替 parent::getBetterButtonsActions() 我还尝试了 $this->owner, Member::, DataObject::

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    这听起来合乎逻辑,因为您的扩展的父级没有名为“getBetterButtonActions”的方法。

    从 BetterButtonDataObject 中的代码我看到已经有一个钩子可以更新 DataExtension 中的 ButtonActions。

    尝试:

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

    【讨论】:

    • 感谢您的尝试,但仍然无法正常工作。使用您的代码,我收到'调用非对象上的成员函数 push()',如果我添加'$fields = parent::getBetterButtonsActions();'或使用 updateBetterButtonsActions 我收到“调用未定义方法 DataExtension::getBetterButtonsActions()”
    • 糟糕,我的错。我们只有可用的变量 $actions(在函数中定义),所以试试 $actions->push...
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多