nyeholt / silverstripe-multirecordeditor
一个在单个界面中编辑多个记录的模块。
dev-master / 2.0.x-dev
2019-08-14 11:06 UTC
This package is auto-updated.
Last update: 2024-09-14 22:06:51 UTC
README
在一个编辑界面中编辑多个字段。
需求
- SilverStripe ^4.1
安装
许可证
见 许可证
解决的问题
在某些网站上,可能希望从管理页面相关对象的编辑过程中移除一些复杂性,只允许编辑这些对象,而不是对其添加和删除有完全控制。
通过为高级用户提供网格字段来添加、重新排序和删除对象,并为内容提供仅可编辑的字段,可以同时满足这两种使用模式。
文档
private static $has_many = array('Elements' => 'BaseElement');
$editor = MultiRecordEditingField::create('Elements', 'Content Cells', $this->Elements());
$fields->addFieldToTab('Root.Elements', $editor);
示例
class Page extends SiteTree { private static $has_many = array( 'Cells' => 'BasicContent', ); public function getCMSFields() { $fields = parent::getCMSFields(); $editor = MultiRecordEditingField::create('ContentCellEditor', 'Content Cells', $this->Cells()); $fields->addFieldToTab('Root.ContentCells', $editor); if (Permission::check('ADMIN')) { $config = GridFieldConfig_RecordEditor::create(); $grid = GridField::create('Cells', 'Cells', $this->Cells(), $config); $fields->addFieldToTab('Root.ContentCells', $grid); } return $fields; } } class Page_Controller extends ContentController {} class BasicContent extends DataObject { private static $db = array( 'Title' => 'Varchar(255)', 'Description' => 'Text', 'Content' => 'HTMLText', ); private static $has_one = array( 'Parent' => 'Page', ); private static $many_many = array( 'Images' => 'Image', ); public function getCMSFields() { $fields = parent::getCMSFields(); $uploadField = UploadField::create('Images', 'Images', $this->Images()); $uploadField->setAllowedFileCategories('image'); $fields->replaceField('Images', $uploadField); return $fields; } }
或者,顶级条目可以插入到不同的选项卡中
// in Page::getCMSFields() $i = 0; foreach ($this->Cells() as $cell) { $editor = MultiRecordEditingField::create('ContentCellEditor' . (++$i), $cell->Title, ArrayList::create(array($cell))); $editor->setUseToggles(false); $fields->addFieldToTab('Root.' . $cell->Title, $editor); }
多编辑-幻觉?
MultiRecordEditingField
支持其他 MultiRecordEditingField
的嵌套。当字段检测到要编辑的字段集中存在 MultiRecordEditingField
时,该字段作为另一个嵌套切换字段添加到父字段集的编辑字段集中。
自定义字段
MultiRecordEditingField
使用 getCMSFields
的输出构建用于编辑的字段列表。要提供一组替代字段,请定义一个返回 FieldList
对象的 multiEditFields
方法。
此外,MultiRecordEditingField
在编辑的 record 上调用 updateMultiEditFields
扩展钩子,以允许扩展更改字段。
前端使用
在构造过程中传入一个布尔标志
MultiRecordEditingField::create('ContentCellEditor', 'Content Cells', $this->Cells(), $frontend = true);
这将触发使用 getFrontEndFields()
而不是 getCMSFields() 来查找字段。
屏幕截图
这允许管理员用户控制页面中可用的编辑元素。
而内容作者则提供了一个页面内视图来编辑项目。
或者设置在不同的选项卡上。
维护者
- Marcus Nyeholt [email protected]