silverstripe - SilverStripe:如何设置/指定 GridField 自定义操作按钮的图标
问题描述
我正在从事 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-<your-icon>');
即对于“编辑”图标,代码如下所示:
return GridField_FormAction::create(
$gridField,
'CustomAction'.$record->ID,
'Custom action',
"docustomaction",
[
'RecordID' => $record->ID
]
)
->addExtraClass('action-menu--handled')
->setAttribute('classNames', 'font-icon-edit');
您可以在此页面上找到所有可用的图标: https ://gbaumeister.github.io/ss4-icons/
推荐阅读
- api - Amadeus API 返回所有请求的内部错误(生产密钥)
- android - 每个线程在 Android 中都有自己的处理程序吗?
- php - 上传的图片坏了。Laravel 日志显示 production.ERROR: Call to undefined function Illuminate Illuminate\Filesystem\finfo_file()
- c++ - Ofstream 似乎没有输出
- rxjs - 为什么 subject.onNext(3) 在这里打印?
- javascript - 动态添加/删除表单组并为每个输入提供唯一的 ID 和名称
- node.js - 在服务器中部署时将 API 请求路由到 MEAN 应用程序中的节点服务器
- vba - 如果数据源没有记录,则跳过 MS Word 邮件合并
- perl - 我应该使用哪种 OAuth2 授权类型?
- c# - 使控制台窗口脱离“选择模式”以防止崩溃