在CakePHP 3.x项目中统一使用一个日期格式

4

这可能是一个简单的问题。

我是否有办法在我的项目中设置一个统一的日期格式,并将此日期格式应用到任何地方?无论是视图、编辑还是索引操作。我需要的格式是Y-m-d H:i:s,与我的本地日期格式无关。

我尝试在引导文件中使用以下代码,但它没有起作用。

Type::build('date')->useLocaleParser()->setLocaleFormat('Y-m-d');
Type::build('datetime')->useLocaleParser()->setLocaleFormat('Y-m-d H:i');

在索引中,它一直显示日期为10/10/15,8:20 PM

同样,对于编辑日期,我使用文本框,所以我需要将文本框显示的日期更改为 2015/10/10 20:20


我不确定Type::build是什么,但你看过Time了吗? - user221931
关于这个问题呢?我想你建议在我显示 DateTime 的任何地方都使用它?但是我希望这个设置是全局的。设置一次,让它一直工作。或者我没有理解你所建议的内容吗? - gmponos
你绝对可以使用 Time 来实现这个功能,我相信这就是它的本意 - 在类似的情况下,我也是用 Number 助手来完成的。 - user221931
2个回答

2
CakePHP有许多实用类和相关的辅助函数,可以为您完成大部分重复或困难的工作。

在这种情况下,Time实用程序类可以全局处理格式,如果您使用默认格式设置它


0

我建议您创建一个文件/类,用于存储应用程序的CONST值,然后在应用程序引导文件中要求该文件/自动加载该类。

define("MYSQL_DATETIME_FORMAT", "Y-m-d H:i:s");

然后,在您的ApplicationController中定义一个属性,例如$mysql_datetime = MYSQL_DATETIME_FORMAT;,并将此值传递到您的视图、视图助手或装饰器类中。

您还可以创建一个用户定义或类定义的回调函数(即助手),它使用此值并为您执行转换(例如function to_mysql_datetime($timeval){...})。然后在您的视图中,您可以调用:

$formatted_datetime = DateFormatHelper::to_mysql_datetime($other_datetime_value);

这是关于此问题的CakePHP文档中的内容:

如果您有任何其他配置需求,应将它们添加到应用程序的config/bootstrap.php文件中。该文件在每个请求和CLI命令之前包含。
该文件非常适合执行一些常见的引导任务,例如定义方便函数、声明常量、创建缓存配置、配置词形变化、加载配置文件等。
但是,请务必在向bootstrap文件中添加内容时保持MVC软件设计模式:可能会诱惑您在那里放置格式化功能以便在控制器中使用它们。如控制器和视图部分所述,有更好的方法将自定义逻辑添加到应用程序中。 源代码

有人可以解释一下为什么要踩我吗?我直接从文档中摘取的内容。这也是所有MVC Web应用程序的非常常见的模式。 - Todd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接