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

标签 php silverstripe

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

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/

相关文章:

php - SilverStripe一次性查询所有DataObject表

javascript document.write 和 insideHTML 输出不同的值

php - PHP 生成表上的 jQuery 表搜索过滤器

php - Mysql 按字段值限制行数

php - 使用数据库数据构造 php 数组

php - 如何触发文件上传到目录的功能?

SilverStripe SortableGridField 复选框默认

forms - Silverstripe 登录参数

silverstripe - 我需要 Silvershop 的下拉品牌过滤器

silverstripe - 使用 onBeforeWrite 时是否可以区分 Silverstripe 中的 Live 和 Stage?