web-dev-qa-db-fra.com

Carbon (Laravel) traite d'une date invalide

J'ai un problème assez simple .. J'utilise la fonction Carbon::parse($date) avec $date = '15.15.2015'. Bien sûr, il ne peut pas retourner une chaîne valide car il n'y a pas de 15ème mois. Mais comment "ignorer" le message d'erreur? Super serait quelque chose comme

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

Passez validation de Laravel avant de l'utiliser. Créez un validateur comme celui-ci:

     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);
}

Et appelez-le juste avant d'utiliser votre date:

$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);

Vous pouvez ajouter tous vos champs souhaités au validateur et appliquer plusieurs validations en gérant chaque message ou en utilisant le message par défaut. Ce serait le cas si vous validez l'entrée de l'utilisateur

6
aaron0207

Vous pouvez attraper l'exception soulevée par Carbon comme ceci:

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