我有一个显示组中成员列表的页面,但我需要更改组成员的排序。我虽然最简单的方法是在页面类型中添加关系编辑器,并通过数据扩展添加排序顺序
这是我在群组
上的扩展程序class MyGroup extends DataExtension {
static $many_many_extraFields = array(
'Members' => array(
'SortOrder' => "Int"
)
);
}
在页面上我有以下内容:
if($this->GroupID != 0 && Permission::check("APPLY_ROLES")) {
$group = Group::get()->byID($this->GroupID);
$fields->addFieldsToTab("Root.Members", array(
GridField::create(
"Members",
"Members",
$group->DirectMembers(),
GridFieldConfig_RelationEditor::create()->addComponents(
new GridFieldSortableRows('SortOrder')
)
)
));
}
当我尝试对成员进行排序时,我收到错误
Uncaught SS_DatabaseException: Couldn't run query:
UPDATE "" SET "SortOrder" = 1 WHERE "" = 12 AND "" = 18
我不确定为什么GridField没有获得列
答案 0 :(得分:0)
您可以在用于gridfield的列表中定义排序顺序
$group->DirectMembers()->sort('Whatever')
如果您想手动对其进行排序,请查看https://github.com/silverstripe-australia/silverstripe-gridfieldextensions或https://github.com/UndefinedOffset/SortableGridField。
两个模块都允许您通过拖放对条目进行排序。