web-dev-qa-db-ja.com

カーボン(laravel)は無効な日付を扱います

非常に単純な問題があります。Carbon::parse($date)関数を$date = '15.15.2015'と共に使用します。もちろん、15か月目がないため、有効な文字列を返すことはできません。しかし、どうすればエラーメッセージを「無視」できますか?のようなものになるでしょう

if (Carbon::parse($date) != error) Carbon::parse($date);
else echo 'invalid date, enduser understands the error message';
6
Nemo Grippa

使用する前に Laravelの検証 を渡します。次のようなバリデーターを作成します。

     protected function validator(array $data)
{
    //$data would be an associative array like ['date_value' => '15.15.2015']
    $message = [
        'date_value.date' => 'invalid date, enduser understands the error message'
    ];
    return Validator::make($data, [
        'date_value' => 'date',
    ],$message);
}

そして、あなたの日付を使用する直前に彼に電話してください:

$this->validator(['date_value' => $date])->validate();
// $this->validator(request()->all())->validate(); you can pass the whole request if fields names are the same

Carbon::parse($date);

必要なフィールドをすべてバリデーターに追加し、すべてのメッセージを処理するか、デフォルトのメッセージを使用して複数の検証を適用できます。これは、ユーザーの入力を検証する場合の方法です

6
aaron0207

次のようにCarbonによって発生した例外をキャッチできます。

try {
    Carbon::parse($date);
} catch (\Exception $e) {
    echo 'invalid date, enduser understands the error message';
}
17
Tudor