在现有的 3 点/更多图标下添加了 SilverStripe 自定义网格字段操作按钮
SilverStripe custom grid field action button is added under the existing 3 dots/ more icon
我正在从事 SilverStripe 项目。在我的项目中,我正在创建一个自定义网格字段操作。我可以创造它。但是在 UI 方面仍然存在问题。自定义网格字段按钮未添加到现有的 3 点/更多图标下,如下面的屏幕截图所示。
如您在屏幕截图中所见,我的自定义操作按钮已添加到 3 点/更多图标旁边。
以下是我的自定义网格字段操作class
class GridFieldCustomAction implements GridField_ColumnProvider, GridField_ActionProvider
{
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)
{
if (!$record->canEdit()) {
return;
}
$field = GridField_FormAction::create(
$gridField,
'CustomAction'.$record->ID,
'Do Action',
"docustomaction",
['RecordID' => $record->ID]
);
return $field->Field();
}
public function getActions($gridField)
{
return ['docustomaction'];
}
public function handleAction(GridField $gridField, $actionName, $arguments, $data)
{
if ($actionName !== 'docustomaction') {
return;
}
// the rest of the code goes here
}
}
这就是我将动作添加到网格字段的方式。
$config = GridFieldConfig_RelationEditor::create();
$config->addComponent(new GridFieldCustomAction());
如何将它放在现有的...图标下?
GridField 操作在实现 the GridField_ActionMenuItem
interface.
时被分组到 "actions menu"
# GridField_ActionMenu.php
/**
* Gets the list of items setup
*
* @return array
*/
public function getItems($gridfield)
{
$items = $gridfield->config->getComponentsByType(GridField_ActionMenuItem::class)->items;
return $items;
}
您可以通过实现该接口向其中添加自定义操作。
我正在从事 SilverStripe 项目。在我的项目中,我正在创建一个自定义网格字段操作。我可以创造它。但是在 UI 方面仍然存在问题。自定义网格字段按钮未添加到现有的 3 点/更多图标下,如下面的屏幕截图所示。
如您在屏幕截图中所见,我的自定义操作按钮已添加到 3 点/更多图标旁边。
以下是我的自定义网格字段操作class
class GridFieldCustomAction implements GridField_ColumnProvider, GridField_ActionProvider
{
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)
{
if (!$record->canEdit()) {
return;
}
$field = GridField_FormAction::create(
$gridField,
'CustomAction'.$record->ID,
'Do Action',
"docustomaction",
['RecordID' => $record->ID]
);
return $field->Field();
}
public function getActions($gridField)
{
return ['docustomaction'];
}
public function handleAction(GridField $gridField, $actionName, $arguments, $data)
{
if ($actionName !== 'docustomaction') {
return;
}
// the rest of the code goes here
}
}
这就是我将动作添加到网格字段的方式。
$config = GridFieldConfig_RelationEditor::create();
$config->addComponent(new GridFieldCustomAction());
如何将它放在现有的...图标下?
GridField 操作在实现 the GridField_ActionMenuItem
interface.
# GridField_ActionMenu.php
/**
* Gets the list of items setup
*
* @return array
*/
public function getItems($gridfield)
{
$items = $gridfield->config->getComponentsByType(GridField_ActionMenuItem::class)->items;
return $items;
}
您可以通过实现该接口向其中添加自定义操作。