如何更改Silverstripe中成员的默认排序


How to change default sort for Members in Silverstripe?

默认情况下,Member对象具有以下排序:

private static $default_sort = '"Surname", "FirstName"';

我们有一个项目,我想在CMS的安全部分按"lastedit DESC"排序所有成员。

我已经尝试使用DataExtension:

class ClubMemberFields extends DataExtension {
  private static $default_sort = 'LastEdited DESC'; 
...
}

YML:

Member:
  extensions:
    - 'ClubMemberFields'

即使在/dev/build/成员仍然按姓氏/姓氏排序。我需要做些什么来设置$default_sort到lastdited ?

作为silverstripe 3,有一个新的配置系统。
这个新的配置系统还可以处理像$db和$default_sort之类的东西。

您已经以两种方式使用这个配置系统,private static $default_sort的使用和yml配置文件。

很多人不知道的是,它们是同一个配置系统。所以你也可以在yml中设置default_sort:

Member:
  default_sort: 'LastEdited DESC'

应该覆盖private static $default_sort的值。
因为配置系统的层次结构是:Config::inst()->update()> yml> php private static

除此之外,在这种情况下使用yml更容易,我看不出你的DataExtension有什么问题,也许你不能用它覆盖default_sort,我不知道。
如果yml版本也不能工作,那么可能您看到的列表没有使用默认排序,而是应用自己的排序。
在这种情况下,您需要自定义列表而不是成员。

编辑:@Tama在评论中指出,为了在GridField中工作,该字段可能必须是summary_fields的一部分。