symiote / silverstripe-multirecordfield
一个用于在后台或前端表单中编辑多个记录的模块。
3.0.1
2018-12-11 22:47 UTC
Requires
- silverstripe/cms: ~3.2
- silverstripe/framework: ~3.2
Replaces
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