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