添加排序到组成员

时间:2016-02-18 00:40:27

标签: silverstripe

我有一个显示组中成员列表的页面,但我需要更改组成员的排序。我虽然最简单的方法是在页面类型中添加关系编辑器,并通过数据扩展添加排序顺序

这是我在群组

上的扩展程序
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没有获得列

1 个答案:

答案 0 :(得分:0)

您可以在用于gridfield的列表中定义排序顺序

$group->DirectMembers()->sort('Whatever')

如果您想手动对其进行排序,请查看https://github.com/silverstripe-australia/silverstripe-gridfieldextensionshttps://github.com/UndefinedOffset/SortableGridField

两个模块都允许您通过拖放对条目进行排序。