默认情况下,成员对象具有以下排序:
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 等事情。
您已经以两种方式使用了这个配置系统,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 中工作。
关于php - 如何更改 Silverstripe 中成员的默认排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277248/