着信POSTリクエストに次の日付検証を使用します。
'trep_txn_date' => 'date_format:"Y-m-d H:i:s.u"'
これにより、この種の日付、つまり2012-01-21 15:59:44.8のみが許可されます
また、TIMEなしで日付を許可したい。 2012-01-21、mysql dbに送信されると、2012-01-21 00:00:00.0として自動的に保存されます
Laravelの既存の検証ルールを使用してこれを行う方法はありますか?以下のようなdate_formatルールで複数のフォーマットを定義する方法はありますか?.
'trep_txn_date' => 'date_format:"Y-m-d H:i:s.u","Y-m-d"' //btw this didn't work.
おかげで、
K
date_formatバリデーターは、パラメーターとして1つの日付形式のみを取ります。複数の形式を使用できるようにするには、カスタム検証ルールを作成する必要があります。幸いなことに、それは非常に簡単です。
次のコードを使用して、AppServiceProviderで複数形式の日付検証を定義できます。
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('date_multi_format', function($attribute, $value, $formats) {
// iterate through all formats
foreach($formats as $format) {
// parse date with current format
$parsed = date_parse_from_format($format, $value);
// if value matches given format return true=validation succeeded
if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) {
return true;
}
}
// value did not match any of the provided formats, so return false=validation failed
return false;
});
}
}
後でこのような新しい検証ルールを次のように使用できます。
'trep_txn_date' => 'date_multi_format:"Y-m-d H:i:s.u","Y-m-d"'
カスタム検証ルールの作成方法について詳しくは、こちらをご覧ください: http://laravel.com/docs/5.1/validation#custom-validation-rules