使用Laravel 5在验证消息中格式化日期

时间:2016-09-19 09:26:45

标签: php validation laravel-5 formatdatetime

在我的数据库中,我的日期字段格式为Y-m-d H:i:s。我想要的是,在数据库中添加新项目时,此日期总是比这个时刻更大。我用laravel的验证器检查了这个:

Validator::make->($request->all(), [ 'date'=>'date|after:'.date(Y-m-d H:i:s) ]);

问题是,我的页面使用不同的语言,每种语言都有不同的日期格式。有时我想要默认格式,有时我想要d.m.Y H:i:s,依此类推...... 我在resources/lang目录中翻译了不同的语言。为了验证,我翻译了现有的validation.php文件,但问题是,我不知道如何格式化日期,如果这种方法甚至可能。现在,我的日期始终是默认格式,我将输入与我的输入进行比较。我的validation.php文件如下所示:

<?php

return [
   'after' => 'The :attribute must be a date after :date.'
];

我现在的问题是,如何格式化:date属性。任何帮助将不胜感激。

我已经尝试过了:

'after' => 'The :attribute must be date after'.date(format, strtotime(':date'))

但它没有做任何事情。

2 个答案:

答案 0 :(得分:1)

我不确定是否可以解决您的问题,但我对此进行了测试:

$dateFormat = 'j.n.Y';
$this->validate($request, [
  'date' => 'date_format:'.$dateFormat.'|after:' . now()->format($dateFormat)
]);

,它似乎有效。 更改$dateFormat,它可以正确显示错误。

答案 1 :(得分:0)

日期将始终传递到PHP strtotime函数。

要使日期始终大于此刻,您只需使用 now 这一术语即可。 Laravel非常简单,如下所示。

Validator::make->($request->all(), [
 'date'=>'date|after:now'
]);