symiote / silverstripe-multirecordfield

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

安装: 615

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 4

开放问题: 5

类型:silverstripe-module

3.0.1 2018-12-11 22:47 UTC

This package is auto-updated.

Last update: 2024-09-17 15:24:54 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 响应。- 测试错误消息/显示

维护者

错误跟踪器