forms - 如何在 Laravel 中处理日期输入

我正在开发一个允许用户在表单中编辑多个日期的应用程序。日期以欧洲格式 (DD-MM-YYYY) 呈现,而数据库使用默认的 YYYY-MM-DD 格式。

有几种方法可以在数据库和用户之间来回编码/解码这些数据,但它们都需要大量代码:

  • 使用辅助函数在保存前和检索后转换日期(非常繁琐,需要很多代码)
  • 为每个日期属性创建一个单独的属性,并使用 setNameAttributegetNameAttribute 方法来解码/编码(也很麻烦和丑陋,每个都需要额外的翻译/规则属性)
  • 在加载和提交表单时使用 JavaScript 转换日期(不是很可靠)

那么从用户那里存储、检索和验证日期和时间的最有效方法是什么?

最佳答案

在某些时候,您必须将日期从 View 格式转换为数据库格式。正如您所提到的,有很多地方可以做到这一点,基本上是在后端或前端之间进行选择。

我使用 javascript 在客户端(前端)进行转换(您可以使用 http://momentjs.com 来帮助解决此问题)。原因是您可能需要不同的格式,具体取决于客户端使用的区域设置(例如在浏览器或他的配置文件首选项中设置)。在前端进行格式转换可以让您轻松转换为这些不同的日期格式。

另一个好处是你可以在你的模型中使用 protected $dates 属性让 Laravel 自动处理(获取和设置)这些日期作为 Carbon 对象,而不需要你做这个(见 https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Model.php#L126)。

至于验证,你需要然后可以使用 Laravel 的内置日期验证规则,如下所示:

'date' => 'required|date|date_format:Y-n-j'

https://stackoverflow.com/questions/24965799/

相关文章:

c# - 使用 String.Format 时,如果字符串值不为 null 或为空,是否有一种简单的

formatting - 如何在我的博客文章中使用 stackoverflow 样式标记?

c# - DataGridViewCheckBoxColumn : FormatException

python - 在 Python 中口头格式化数字

Python 浮点格式 - 类似于 "g",但数字更多

html - 用于 HTML 和 CSS 中的双面打印的甚至分页符

formatting - JSON.Net 将 XML 序列化为 JSON 驼峰式案例

ios - iPhone : How to get number from string with

xml - 如何使用 gVim 格式化未格式化的 XML 文档?

vim - 使用 Vim,是否有更有效的方法来根据这个最佳实践来格式化 LaTeX 段落?