向组成员添加排序



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

这是我在组上的扩展

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

我不确定为什么网格字段没有得到列

您可以在用于

网格字段的列表中定义排序顺序

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

如果要手动对它们进行排序,请查看 https://github.com/silverstripe-australia/silverstripe-gridfieldextensions 或 https://github.com/UndefinedOffset/SortableGridField。

这两个模块都使您可以通过拖放对条目进行排序。

最新更新