在 SilverStripe 3.1 的模型管理中添加一个新按钮
Add a new button in Model Admin in SilverStripe 3.1
我使用 SilverStripe 3.1 创建了一个新的模型管理员。
我想在网格视图顶部的 'Add' 按钮旁边添加一个按钮。我有什么办法可以做到这一点并为此创建一个动作吗?
这是我目前的发现。
public function getEditForm($id = null, $fields = null)
{
/**
* @var $EditForm CMSForm
*/
$EditForm = parent::getEditForm($id, $fields);
$EditForm->Fields()->add(LiteralField::create('Sync', '<button><a href="www.google.com"> Sync </a></button>'));
return $EditForm;
}
我也想要一个处理程序。
一段时间后,我想出了我需要做什么。这有三个步骤。
第一步:
创建一个新的 class 随便命名并扩展 GridField_HTMLProvider
class GridFieldSyncButton implements GridField_HTMLProvider
{
/**
* @var string
*/
protected $targetFragment;
/**
* @param string $targetFragment
*/
public function __construct($targetFragment = 'before')
{
$this->targetFragment = $targetFragment;
}
/**
* @param $gridField
* @return array
*/
public function getHTMLFragments($gridField)
{
//-- The link to where the button links
$data = new ArrayData(array('Sync' => Controller::join_links('link')));
//--
return array
(
$this->targetFragment => $data->renderWith('GridFieldSyncButton')
);
}
}
这里您所做的是创建一个新的网格字段组件,您将能够附加该组件
第二步:创建模板
<a href="$Sync" class="ss-ui-button ui-button ui-widget ui-state-default ui-corner-all" data-icon="add">
Sync Calculators
</a>
<br/><br/>
第三步:将其添加到您的网格
$GridField = $EditForm->Fields()->items[0];
$GridField->getConfig()->addComponent(new GridFieldSyncButton());
我使用 SilverStripe 3.1 创建了一个新的模型管理员。
我想在网格视图顶部的 'Add' 按钮旁边添加一个按钮。我有什么办法可以做到这一点并为此创建一个动作吗?
这是我目前的发现。
public function getEditForm($id = null, $fields = null)
{
/**
* @var $EditForm CMSForm
*/
$EditForm = parent::getEditForm($id, $fields);
$EditForm->Fields()->add(LiteralField::create('Sync', '<button><a href="www.google.com"> Sync </a></button>'));
return $EditForm;
}
我也想要一个处理程序。
一段时间后,我想出了我需要做什么。这有三个步骤。
第一步: 创建一个新的 class 随便命名并扩展 GridField_HTMLProvider
class GridFieldSyncButton implements GridField_HTMLProvider
{
/**
* @var string
*/
protected $targetFragment;
/**
* @param string $targetFragment
*/
public function __construct($targetFragment = 'before')
{
$this->targetFragment = $targetFragment;
}
/**
* @param $gridField
* @return array
*/
public function getHTMLFragments($gridField)
{
//-- The link to where the button links
$data = new ArrayData(array('Sync' => Controller::join_links('link')));
//--
return array
(
$this->targetFragment => $data->renderWith('GridFieldSyncButton')
);
}
}
这里您所做的是创建一个新的网格字段组件,您将能够附加该组件
第二步:创建模板
<a href="$Sync" class="ss-ui-button ui-button ui-widget ui-state-default ui-corner-all" data-icon="add">
Sync Calculators
</a>
<br/><br/>
第三步:将其添加到您的网格
$GridField = $EditForm->Fields()->items[0];
$GridField->getConfig()->addComponent(new GridFieldSyncButton());