我想知道如何使用Member :: currentUser() - > DateFormat将日期从模型格式化为字符串。我的用例位于GridField列中,前面有对象标题:
return $this->Title . " (" . $this->Date . ")";
我希望GridField字符串使用CMS用户选择的日期格式。
我试过了:
return $this->Title . " (" . date(Member::currentUser()->DateFormat, $this->Date) . ")";
但是因为CMS以不同于PHP日期格式的格式存储用户日期,所以它会返回一些不稳定的结果。
答案 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->日期是时间戳值,而不是格式化日期/日期时间值。