编程语言
首页 > 编程语言> > php-如何更改Silverstripe中成员的默认排序?

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 /之后,仍按姓/名对成员进行排序.我需要怎么做才能将$default_sort设置为LastEdited?

解决方法:

从silverstripe 3开始,有一个新的配置系统.
这个新的配置系统还处理$db和$default_sort之类的东西.

您已经以两种方式使用此配置系统,即使用私有静态$default_sort和yml配置文件.

许多人不知道的是,它们是一个相同的配置系统.
因此,您也可以在yml中设置default_sort:

Member:
  default_sort: 'LastEdited DESC'

这将覆盖私有静态$default_sort中的值.
因为配置系统的层次结构为:Config :: inst()-> update()> yml> PHP的私人静态

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

编辑:@Tama在注释中指出,该字段可能必须是summary_fields的一部分才能在GridField中工作.

标签:silverstripe,php
来源: https://codeday.me/bug/20191029/1958559.html