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

标签 forms date laravel localization formatting

我正在开发一个允许用户在表单中编辑多个日期的应用程序。日期以欧洲格式 (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'

关于forms - 如何在 Laravel 中处理日期输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24965799/

相关文章:

javascript - 基本表单 [Javascript/HTML]

mysql - 如何将图像/文件存储在通过表单输入的文件夹中并将地址保存到sql DB?

java - 将 java.sql.Date 格式化为 yyyyMMdd

javascript - 生日日期自动生成 18 岁年份

使用\PDO::ATTR_EMULATE_PREPARES => true 时 Laravel 数据不匹配错误

php - Artisan 无法连接到 mysql - Laravel 4.2

javascript - 在不提交表单的情况下使用 ngClick 触发自动完成

jquery - 使用 jQuery 根据多个 <select> 选项更改表单操作

java - 如何更新接近当前日历的 Java 日历对象

php - 提交后选择要打开的选项卡。