2017-10-19 36 views
0

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 mois 15. Mais comment puis-je "ignorer" le message d'erreur? Grand serait quelque chose commeCarbone (laravel) traiter avec une date invalide

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

Répondre

1

passe Laravel's validation avant l'utiliser. Créer un validateur comme ceci:

 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 l'appeler utiliser juste avant 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 désirés à validateur et appliquer plusieurs validations de traitement de chaque message ou en utilisant le message par défaut . Ce serait le moyen si vous validez l'entrée de l'utilisateur

+0

Merci! Où puis-je mettre la «fonction protégée»? –

+0

À l'intérieur du contrôleur qui reçoit le «$ date» ou le fichier que vous voulez utiliser pour valider la demande/les données entrantes. N'oubliez pas d'utiliser: 'use Illuminate \ Support \ Facades \ Validator;' – aaron0207

+0

Merci beaucoup! Ouais, j'ai eu le message et je l'ai regardé moi-même .. Ca marche, merci beaucoup! –

0

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'; 
} 
+0

Merci, où dois-je inclure ce morceau de code? –

+0

Vous devez l'inclure partout où vous voulez valider la date et afficher le message d'erreur, cela dépend de ce que vous faites d'autre sur cette requête. J'aurais besoin de toute la fonction du contrôleur pour fournir une réponse plus utile. – Tudor