silbinarywolf/multirecordfield

此包已被弃用且不再维护。作者建议使用symbiote/silverstripe-multirecordfield包。

一个用于在后台或前端表单上编辑多个记录的模块。

安装: 2,853

依赖: 0

建议者: 0

安全: 0

星级: 1

关注者: 0

分支: 3

类型:silverstripe-module

3.0.1 2018-12-11 22:47 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扩展钩子,允许扩展更改字段。

屏幕截图

Alt text

待办事项

单元测试后端:- 确保当Form $Validator返回false时,所有表单数据都能正确恢复。- 确保显示逻辑与该模块协同工作得很好。- 确保权限检查按预期工作。前端:- 测试排序,确保正确更新了隐藏字段。- 测试添加按钮和AJAX响应。- 测试错误消息/显示

维护者

错误跟踪器