restruct/silverstripe-copybutton

向 GridField 添加复制/重复按钮。

安装次数: 1,295

依赖关系: 1

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 20

类型:silverstripe-vendormodule

2.0.0 2020-10-28 09:01 UTC

This package is auto-updated.

Last update: 2024-09-07 15:53:38 UTC


README

向 GridFields 添加复制/重复按钮

原作者

Elvinas Liutkevičius <elvinas (at) unisolutions (dot) eu>
(从 dhensby 的 SS4-updated 分支 fork 来方便维护和更新/标签)

文档

简单使用标准方法安装模块。

要将按钮添加到 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](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);
	}

}