SilverStripe:如何设置/指定GridField自定义操作按钮的图标

SilverStripe:如何设置/指定GridField自定义操作按钮的图标,silverstripe,silverstripe-4,Silverstripe,Silverstripe 4,我正在做一个SilverStripe项目。在我的项目中,我试图创建一个GridField自定义按钮。我遵循官方文件。以下是SilverStripe官方页面上的课程表 class GridFieldCustomAction implements GridField_ColumnProvider, GridField_ActionProvider, GridField_ActionMenuItem { public function getTitle($gridField, $record

我正在做一个SilverStripe项目。在我的项目中,我试图创建一个GridField自定义按钮。我遵循官方文件。以下是SilverStripe官方页面上的课程表

class GridFieldCustomAction implements GridField_ColumnProvider, GridField_ActionProvider, GridField_ActionMenuItem
{

    public function getTitle($gridField, $record, $columnName)
    {
        return 'Custom action';
    }

    public function getCustomAction($gridField, $record)
    {
        if (!$record->canEdit()) {
            return;
        }

        return GridField_FormAction::create(
            $gridField,
            'CustomAction'.$record->ID,
            'Custom action',
            "docustomaction",
            ['RecordID' => $record->ID]
         )->addExtraClass(
            'action-menu--handled'
        );
    }

    public function getExtraData($gridField, $record, $columnName)
    {
        $field = $this->getCustomAction($gridField, $record);

        if (!$field) {
            return;
        }

        return $field->getAttributes();
    }

    public function getGroup($gridField, $record, $columnName)
    {
        return GridField_ActionMenuItem::DEFAULT_GROUP;
    }

    public function augmentColumns($gridField, &$columns) 
    {
        if (!in_array('Actions', $columns)) {
            $columns[] = 'Actions';
        }
    }

    public function getColumnAttributes($gridField, $record, $columnName) 
    {
        return ['class' => 'grid-field__col-compact'];
    }

    public function getColumnMetadata($gridField, $columnName) 
    {
        if ($columnName === 'Actions') {
            return ['title' => ''];
        }
    }

    public function getColumnsHandled($gridField) 
    {
        return ['Actions'];
    }

    public function getColumnContent($gridField, $record, $columnName) 
    {
        $field = $this->getCustomAction($gridField, $record);

        if (!$field) {
            return;
        }

        return $field->Field();
    }

    public function getActions($gridField) 
    {
        return ['docustomaction'];
    }

    public function handleAction(GridField $gridField, $actionName, $arguments, $data) 
    {
        if ($actionName !== 'docustomaction') {
            return;
        }
        // perform your action here

        // output a success message to the user
        Controller::curr()->getResponse()->setStatusCode(
            200,
            'Do Custom Action Done.'
        );
    }
}

我正在努力为按钮添加自定义图标或指定按钮的样式类。我可以更改列类名称。但是我找不到按钮的方法。如何实现这一点?

您可以使用setAttribute('classNames','font-icon-')实现这一点

i、 e.对于“编辑”图标,代码如下所示:

return GridField_FormAction::create(
    $gridField,
    'CustomAction'.$record->ID,
    'Custom action',
    "docustomaction",
    [
        'RecordID' => $record->ID
    ]
)
    ->addExtraClass('action-menu--handled')
    ->setAttribute('classNames', 'font-icon-edit');
您可以在此页面上找到所有可用图标:

在您的示例代码中,您试图在何处设置图标?您好,我尝试将HTML代码放入getTitle方法中。它不起作用。我仍然找不到一个地方去做那件事。我该怎么做?