Php Silverstripe currentUser()->;日期格式
我想知道如何使用Member::currentUser()->DateFormat将模型中的日期格式化为字符串。我的用例位于GridField列中,前面有对象标题:Php Silverstripe currentUser()->;日期格式,php,silverstripe,Php,Silverstripe,我想知道如何使用Member::currentUser()->DateFormat将模型中的日期格式化为字符串。我的用例位于GridField列中,前面有对象标题: 返回$this->Title。“(“$this->Date.”) 我希望GridField字符串使用CMS用户选择的日期格式 我试过: 返回$this->Title。“(“.date(成员::currentUser()->DateFormat,$this->date)。” 但由于CMS以不同于PHP日期格式的格式存储用户日期,因此它
返回$this->Title。“(“$this->Date.”)代码>
我希望GridField字符串使用CMS用户选择的日期格式
我试过:
返回$this->Title。“(“.date(成员::currentUser()->DateFormat,$this->date)。”代码>
但由于CMS以不同于PHP日期格式的格式存储用户日期,因此它会返回一些不可靠的结果。确保$this->date是一个时间戳值,而不是格式化的日期/日期时间值。日期上有一个helper方法,正是出于这个目的
如果您的数据对象有一个名为Date
的字段,则可以使用类似的方法将日期格式化为字符串(基于当前成员设置):
在模板中,您应该能够使用:
$Date.FormatFromSettings
如果您只想在GridField中格式化日期,那么指定DataObject的摘要\u字段就足够了,例如:
private static $summary_fields = [
'Title' => 'Title',
'Date.FormatFromSettings' => 'Date'
];
在CMS上下文中使用它不是问题。在使用前端代码时,必须考虑没有登录成员的情况。在这些情况下,FormatFromSettings
将返回false
…因此您可能必须为日期编写自己的getter,当有人登录时,它将返回用户格式化的日期,以及其他情况下的备用格式。我尝试了“Date”和“SS_Datetime”数据类型,得到了相同的结果!FormatFromSettings()正是我所需要的。我无法使用summary_fields方法,因为我需要在标题前加上前缀,但这非常有效。有没有方法可以使用时间数据类型进行此操作?@Chris您可以在SS_Datetime
中查看FormatFromSettings
实现,我想你必须从中提取出只对时间进行格式化的部分。从中看,似乎会有点混乱。除非你知道干净利落的方法。否则,将FormatFromSettings添加到时间数据类型是否值得PR?这就是我在此期间所做的,我将组合一个PR,将FormatFromSettings()添加到时间数据类型。谢谢你,伙计!
private static $summary_fields = [
'Title' => 'Title',
'Date.FormatFromSettings' => 'Date'
];