【问题标题】:How to change default sort for Members in Silverstripe?如何更改 Silverstripe 中成员的默认排序?
【发布时间】:2014-08-13 02:45:52
【问题描述】:

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

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?

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    从 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 中工作。

    【讨论】:

    • 事实证明,因为我没有将“LastEdited”作为汇总字段包含在内,Security 中的表格不会对其进行排序。使用您的方法并添加该列有效。
    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2013-04-15
    相关资源
    最近更新 更多