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

时间:2014-08-13 02:45:53

标签: php silverstripe

默认情况下,Member对象具有以下类别:

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

我们有一个项目,我希望通过" LastEdited DESC"对CMS的安全部分中的所有成员进行排序。

我尝试使用DataExtension应用它:

class ClubMemberFields extends DataExtension {

  private static $default_sort = 'LastEdited DESC'; 

...
}

YML:

Member:
  extensions:
    - 'ClubMemberFields'

即使在/ dev / build /之后,仍然按Surname / Firstname对成员进行排序。如何将$ default_sort设置为LastEdited?

1 个答案:

答案 0 :(得分:4)

从银线条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在评论中指出,该字段可能必须是summary_fields的一部分才能在GridField中工作。