Silverstripe currentUser() - > DateFormat

时间:2017-07-02 07:04:43

标签: php silverstripe

我想知道如何使用Member :: currentUser() - > DateFormat将日期从模型格式化为字符串。我的用例位于GridField列中,前面有对象标题:

return $this->Title . " (" . $this->Date . ")";

我希望GridField字符串使用CMS用户选择的日期格式。

我试过了:

return $this->Title . " (" . date(Member::currentUser()->DateFormat, $this->Date) . ")";

但是因为CMS以不同于PHP日期格式的格式存储用户日期,所以它会返回一些不稳定的结果。

2 个答案:

答案 0 :(得分:3)

Date上有一个辅助方法,正是为了这个目的,Date->FormatFromSettings

如果您的DataObject有一个名为Date的字段,您可以使用类似的东西将日期格式化为字符串(基于当前成员设置):

$this->dbObject('Date')->FormatFromSettings()

在模板中,您应该可以使用:

$Date.FormatFromSettings

如果您只想格式化GridField中的日期,则可能足以指定DataObject的summary_fields,例如:

private static $summary_fields = [
    'Title' => 'Title',
    'Date.FormatFromSettings' => 'Date'
];

在CMS上下文中使用它不是问题。当将此用于前端代码时,您必须考虑没有成员登录的情况。在这些情况下FormatFromSettings将返回false ...所以您可能必须为日期编写自己的getter ,当有人登录时返回用户格式的日期,以及其他情况的后备格式。

答案 1 :(得分:0)

确保$ this->日期是时间戳值,而不是格式化日期/日期时间值。