Validieren eines benutzerdefinierten Datumsformats mit dem Laravel-Validator

Lesezeit: 1 Minute

Benutzer-Avatar
Jakob

In meiner App wählt der Benutzer das Datum aus einer Datumsauswahl aus und das Datum wird dann in der Eingabe in einem Format angezeigt, das dem Gebietsschema des Benutzers entspricht.

Beim Absenden des Formulars möchte ich das jeweilige Datum validieren, der Validator kennt jedoch nicht das Datumsformat, in dem das Datum eingereicht wurde.

Meine Frage ist, ob ich das Datum in Ymd mutieren sollte, bevor es an den Validator übergeben wird, oder gibt es eine Möglichkeit, dem Validator das richtige Format für die Validierung mitzuteilen?

  • Du könntest es einfach mit dem versuchen date Regel, wenn nicht, würde ich vorschlagen, es zu ändern Y-m-d bevor Sie es validieren. laravel.com/docs/5.6/validation#rule-date

    – Marwelln

    11. Mai 2018 um 8:20 Uhr


  • Wenn Sie verwenden input[type="date"] Mit Ihrem Datepicker wird der übergebene Wert immer sein Y-m-d.

    – Marwelln

    11. Mai 2018 um 8:21 Uhr

Die einfachere Option ist die Verwendung des Laravel date_format:format
Regel (https://laravel.com/docs/5.5/validation#rule-date-format). Es ist eine integrierte Funktion in Laravel, ohne dass eine benutzerdefinierte Regel erforderlich ist (verfügbar in Laravel 5.0+).

Du kannst tun:

$rule['date'] = 'required|date_format:d/m/Y';

oder

$rule['date'] = 'required|date_format:Y-m-d';

Benutzerdefinierte Laravel-Validierungsregeln

Sie können die Multiformat-Datumsvalidierung in Ihrer definieren AppServiceProvider

class AppServiceProvider extends ServiceProvider  
{
  public function boot()
  {
    Validator::extend('new-format', function($attribute, $value, $formats) {

      foreach($formats as $format) {

        $parsed = date_parse_from_format($format, $value);

        // validation success
        if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) {
          return true;
        }
      }

      // validation failed
      return false;
    });
  }
}

Jetzt können Sie eine benutzerdefinierte Validierungsregel verwenden:

'your-date' => 'new-format:"Y-m-d H:i:s.u","Y-m-d"'

1256790cookie-checkValidieren eines benutzerdefinierten Datumsformats mit dem Laravel-Validator

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy