dhensby / silverstripe-copybutton
为GridField添加复制按钮。
v2.0.0
2023-07-13 21:27 UTC
Requires
- silverstripe/framework: ^4 || ^5
Replaces
This package is auto-updated.
Last update: 2024-09-13 23:59:20 UTC
README
为GridField添加复制按钮
维护者联系方式
Elvinas Liutkevičius
<elvinas (at) unisolutions (dot) eu>
要求
SilverStripe 4
文档
只需使用标准方法安装模块。
要将按钮添加到GridField,您需要扩展ModelAdmin并重写getEditForm()方法,如下所示
function getEditForm($id = null, $fields = null) {
$form = parent::getEditForm();
$form
->Fields()
->fieldByName($this->sanitiseClassName($this->modelClass))
->getConfig()
->addComponent(new GridFieldCopyButton(), 'GridFieldEditButton') // or just ->addComponent(new GridFieldCopyButton())
;
return $form;
}
此操作将创建记录的完整副本(包括所有关系等)。注意:您必须设置DataObjects中的级联复制配置以复制关系。请参阅:https://docs.silverstripe.org/en/4/developer_guides/model/relations/#cascading-duplications
有时您需要在复制操作之后执行一些操作(例如,您可能需要删除一些关系)。这可以通过扩展DataObject并在onAfterDuplicate()方法中编写所有操作轻松实现。
class SomeObjectExtension extends DataExtension {
public function onAfterDuplicate() {
DB::query("delete from Member_SomeObject where SomeObjectID = ".$this->owner->ID);
}
}