silbinarywolf / multirecordfield
3.0.1
2018-12-11 22:47 UTC
Requires
- silverstripe/cms: ~3.2
- silverstripe/framework: ~3.2
Replaces
This package is not auto-updated.
Last update: 2019-02-20 19:29:18 UTC
README
GridField的替代品。允许在后台或前端表单中创建和编辑多个记录。
支持
- SilverStripe 3.2及以上版本
- PHP 5.4+
- 显示逻辑
- Dropzone模块
- 快速添加新模块
示例使用
class Page extends SiteTree { private static $has_many = array( 'Cells' => 'BasicContent', ); public function getCMSFields() { $fields = parent::getCMSFields(); $editor = MultiRecordField::create('ContentCellEditor', 'Content Cells', $this->Cells()); $fields->addFieldToTab('Root.ContentCells', $editor); return $fields; } }
MultiRecordField嵌套
MultiRecordField
支持其他MultiRecordField
的嵌套。当字段检测到要编辑的字段集中有MultiRecordField
时,该字段将作为另一个嵌套切换字段添加到父字段集中进行编辑。
**将现有GridField转换为MultiRecordField **
您可能希望保留一些对GridField进行的配置,这些配置MultiRecordField也支持。在这种情况下,您需要利用MultiRecordTransformation
类。
这将确保GridFieldExtensions GridFieldAddNewMultiClass
上的属性会传递。
<?php foreach ($fields->dataFields() as $field) { if ($field instanceof GridField) { $fields->replaceField($field->getName(), $field->transform(new MultiRecordTransformation)); } }
自定义字段
MultiRecordField
在构建用于编辑的字段列表时使用getCMSFields
的输出。要提供一组不同的字段,定义一个返回FieldList
对象的getMultiRecordFields
方法。
此外,MultiRecordField
会在正在编辑的record上调用updateMultiEditFields
扩展钩子,允许扩展更改字段。
屏幕截图
待办事项
单元测试后端:- 确保当Form $Validator返回false时,所有表单数据都能正确恢复。- 确保显示逻辑与该模块协同工作得很好。- 确保权限检查按预期工作。前端:- 测试排序,确保正确更新了隐藏字段。- 测试添加按钮和AJAX响应。- 测试错误消息/显示
维护者
- Jake Bentvelzen jake@symbiote.com.au