sheadawson/quickaddnew

此软件包最新版本(1.1.5)没有提供许可证信息。

用于管理对象关系的表单字段装饰器,允许通过对话框窗口动态添加新对象。它可以处理 has_one、has_many 或 many_many 关系。目前已在 DropdownField 和 ListboxField 上进行了测试/工作。它既适用于 CMS,也适用于前端。对于前端,建议使用 Select2Field 或 MultiSelect2Field

安装次数: 34,190

依赖项: 9

建议者: 0

安全性: 0

星标: 39

关注者: 6

分支: 23

公开问题: 7

类型:silverstripe-module

1.1.5 2019-09-30 00:29 UTC

This package is auto-updated.

Last update: 2024-09-08 11:00:57 UTC


README

这是什么?

用于管理对象关系的表单字段装饰器,允许通过对话框窗口动态添加新对象。它可以处理 has_one、has_many 或 many_many 关系。目前已在 DropdownField、ListboxField 和 CheckboxSetField 上进行了测试/工作。它既适用于 CMS,也适用于前端。对于前端,建议使用 Select2Field 或 MultiSelect2Field

截图

Screenshot

需求

SilverStripe 3

用法

首先,在创建表单字段时,我们需要创建一个返回填充字段选项的源数组的闭包。我们这样做是因为稍后,当字段以新创建的对象 ID 作为其值刷新时,我们需要再次使用此函数来获取最新的源数据。

$source = function(){
	return MyObject::get()->map()->toArray();
};

然后我们可以创建表单字段,将闭包作为源参数调用

$field = DropdownField::create('MyObjectID', 'My Object', $source());

接下来,我们可以告诉字段使用并配置 quickaddnew。第一个参数是要创建的对象的类名。第二个是 $source 闭包。注意:有关可用的配置参数列表,请参阅 QuickAddNewExtension::useAddNew()。这些允许您自定义对话框的字段和必填字段(用于验证)。默认情况下,使用对象类的 getAddNewFields() 或 getCMSFields() 方法

$field->useAddNew('MyObject', $source);

将字段添加到您的 FieldList

$fields->addFieldToTab('Root.Main', $field);