Formularvalidierung
- Router erstellen
- Validierungslogik schreibenFormular zur Autorisierungsüberprüfung anfordern
- Fehler bei der benutzerdefinierten Verifizierung FehlermeldungFalsches Paket benennen
- Post-Validierungs-Hook
- verfügbar ValidierungsregelnValidierungsarray
- Benutzerdefinierte Validierungsregeln
- Validierungsregelobjekt verwenden
- Abschlüsse verwenden
- Erweiterungen verwendenLaravel Zur Validierung der an die Anwendung übergebenen Daten stehen verschiedene Methoden zur Verfügung. Standardmäßig verwenden die Controller-Basisklassen von Laravel das Trait , das eine bequeme Möglichkeit bietet, eingehende HTTP-Anfragen mithilfe einer Vielzahl leistungsstarker Validierungsregeln zu validieren.
Schnelle Validierung
Um die leistungsstarken Validierungsfunktionen von Laravel zu verstehen, schauen wir uns ein vollständiges Beispiel für die Validierung eines Formulars und die Anzeige einer Fehlermeldung an den Benutzer an.
Routen definieren
Nehmen wir zunächst an, dass die folgenden Routen in der Datei routes/web.php
definiert sind:
Route::get('post/create', 'PostController@create'); Route::post('post', 'PostController@store');
Natürlich GET
Die Route zeigt dem Benutzer ein Formular zum Erstellen eines neuen Blogbeitrags an, während die POST-Route den neuen Blogbeitrag in der Datenbank speichert.
Erstellen von Routern
Werfen wir einen Blick auf den Controller, der diese Routen verwaltet, store
Methode Belassen Sie dies vorerst leer.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class PostController extends Controller{ /** * 显示创建博客文章的表单。 * * @return Response */ public function create() { return view('post.create'); } /** * 保存一篇新的博客文章。 * * @param Request $request * @return Response */ public function store(Request $request) { // 验证并存储博客文章... } }
Schreiben der Validatorlogik
Jetzt beginnen wir mit dem Schreiben der Logik in der store
-Methode zur Validierung neuer Blogbeitrag. Dazu verwenden wir die vom IlluminateHttpRequest
-Objekt bereitgestellte Methode validate
. Wenn die Überprüfung erfolgreich ist, kann der Code normal ausgeführt werden. Wenn die Überprüfung fehlschlägt, wird eine Ausnahme ausgelöst und die entsprechende Fehlerantwort wird automatisch an den Benutzer zurückgegeben. Bei einer typischen HTTP-Anfrage wird eine Redirect-Antwort generiert, während bei AJAX-Anfragen eine JSON-Antwort gesendet wird.
Kehren wir zur store
-Methode zurück, um die validate
-Methode im Detail zu verstehen:
/** * 保存一篇新的博客文章。 * * @param Request $request * @return Response */ public function store(Request $request){ $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // 博客文章验证通过 }
Wie Sie sehen können, übergeben wir die erforderlichen Validierungsregeln an die validate
-Methode. Auch hier gilt: Sollte die Verifizierung fehlschlagen, wird automatisch eine entsprechende Antwort generiert. Wenn die Überprüfung erfolgreich ist, funktioniert unser Controller weiterhin normal.
Ausführung nach dem ersten Validierungsfehler stoppen
Wenn Sie möchten, dass eine Validierungsregel nicht mehr ausgeführt wird, nachdem eine Eigenschaft zum ersten Mal bei der Validierung fehlschlägt, müssen Sie das < anhängen 🎜> Regel für das Attribut: bail
$request->validate([ 'title' => 'bail|required|unique:posts|max:255', 'body' => 'required', ]);In diesem Beispiel, wenn das Feld
title
nicht übergibt Regel, dann prüft das Programm die unique
-Regel nicht weiter. Regeln werden in der Reihenfolge überprüft, in der sie zugewiesen werden. max
$request->validate([ 'title' => 'required|unique:posts|max:255', 'author.name' => 'required', 'author.description' => 'required', ]);
Validierungsfehlermeldung anzeigen
Was passiert, wenn die eingehenden Anforderungsparameter die angegebenen Validierungsregeln nicht erfüllen? Wie bereits erwähnt, leitet Laravel den Benutzer automatisch zum vorherigen Standort weiter. Darüber hinaus werden alle Validierungsfehlermeldungen automatisch in session
gespeichert.
Auch hier müssen wir die Fehlermeldung nicht explizit an die Ansicht in der Route GET
binden. Denn Lavarel prüft die Fehlerinformationen in den Sitzungsdaten und bindet sie automatisch an die Ansicht (sofern die Ansichtsdatei vorhanden ist). Und die Variable $errors
ist eine Instanz von IlluminateSupportMessageBag
. Weitere Informationen zu diesem Objekt finden Sie in dieser Dokumentation.
{tip}
$errors
-Variablen werden durch dieWeb
-Middleware, die von derIlluminateViewMiddlewareShareErrorsFromSession
-Middleware-Gruppe bereitgestellt wird, an die Ansicht gebunden. Wenn diese Middleware angewendet wird, ist die$error
-Variable in Ihrer Ansicht verfügbar, sodass immer davon ausgegangen wird, dass die$errors
-Variable vorhanden ist und sicher verwendet werden kann.
Wenn im obigen Beispiel die Überprüfung fehlschlägt, wird der Benutzer zum create
des Controllers weitergeleitet Methode, mit der wir Fehlermeldungen in der Ansicht anzeigen können:
<!-- /resources/views/post/create.blade.php --> <h1>创建文章</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- 创建文章表单 -->
Hinweise zu optionalen Feldern
Standardmäßig ist Die AppHttpKernel
-Klasse des globalen Middleware-Stacks in einer Laravel-Anwendung enthält TrimStrings
und ConvertEmptyStringsToNull
Middleware. Wenn Sie also nicht möchten, dass der Validator null
-Werte als ungültig behandelt, müssen Sie das „optionale“ Anforderungsfeld als nullable
markieren, zum Beispiel:
$request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', 'publish_at' => 'nullable|date', ]);
in diesem Beispiel. Wir geben an, dass das Feld publish_at
null
oder ein gültiges Datumsformat sein kann. Wenn der Modifikator nullable
nicht zur Regeldefinition hinzugefügt wird, betrachtet der Validator null
als ungültiges Datumsformat.
AJAX-Anfrage und Validierung
In diesem Beispiel verwenden wir ein traditionelles Formular, um Daten an die Anwendung zu senden. Aber in Wirklichkeit verwenden viele Programme AJAX zum Senden von Anfragen. Wenn wir die validate
-Methode in einer AJAX-Anfrage verwenden, generiert Laravel keine Umleitungsantwort, sondern stattdessen eine JSON-Antwort, die alle Validierungsfehlerinformationen enthält. Diese JSON-Antwort wird mit einem HTTP-Statuscode 422 gesendet.
Validierungsformularanforderung
Formularanforderungsüberprüfung erstellen
Angesichts komplexerer Überprüfungsszenarien können Sie eine „Formularanforderung“ erstellen, um komplexere Logik zu verarbeiten. Formularanfragen sind benutzerdefinierte Anfrageklassen, die Validierungslogik enthalten. Die Formularanforderungsklasse kann mit dem Artisan-Befehl make:request
erstellt werden:
php artisan make:request StoreBlogPost
Die neu generierte Klasse wird im Verzeichnis app/Http/Requests
gespeichert. Wenn dieses Verzeichnis nicht existiert, wird es beim Ausführen des Befehls make:request
erstellt. Fügen wir der rules
-Methode einige Validierungsregeln hinzu:
/** * 获取适用于请求的验证规则。 * * @return array */ public function rules(){ return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; }
{tip} Sie können beliebige Abhängigkeiten an die
rules
-Methode übergeben. Sie werden automatisch durch den von Laravel bereitgestellten Service-Container gelöst.
Wie funktionieren Validierungsregeln? Alles, was Sie tun müssen, ist, die eingehende Anforderung in der Controller-Methode einzugeben. Validieren Sie die eingehende Formularanforderung, bevor Sie die Controller-Methode aufrufen. Das bedeutet, dass Sie keine Validierungslogik in den Controller schreiben müssen:
/** * 存储传入的博客文章。 * * @param StoreBlogPost $request * @return Response */ public function store(StoreBlogPost $request){ // 传入的请求通过验证... // 获取通过验证的数据... $validated = $request->validated(); }
Wenn die Validierung fehlschlägt, wird eine Nachricht generiert, die den Benutzer zur vorherigen zurückführt Standortumleitungsantwort. Diese Fehler werden auch in session
geflasht, damit sie auf der Seite angezeigt werden können. Wenn es sich bei der eingehenden Anfrage um AJAX handelt, wird eine HTTP-Antwort mit JSON-Daten mit einem 422-Statuscode und Validierungsfehlerinformationen an den Benutzer zurückgegeben.
Post-Formular-Anfrage-Hook hinzufügen
Wenn Sie einen Hook „nach“ der Formularanfrage hinzufügen möchten, können Sie die Methode withValidator
verwenden. Diese Methode akzeptiert einen vollständigen Validierungskonstruktor, sodass Sie jede Methode aufrufen können, bevor das Validierungsergebnis zurückgegeben wird:
/** * 配置验证器实例。 * * @param \Illuminate\Validation\Validator $validator * @return void */ public function withValidator($validator){ $validator->after(function ($validator) { if ($this->somethingElseIsInvalid()) { $validator->errors()->add('field', 'Something is wrong with this field!'); } }); }
Formularanforderungsautorisierungsvalidierung
Die Formularanforderungsklasse enthält auch die Methode authorize
. Bei dieser Methode können Sie den authentifizierten Benutzer überprüfen, um festzustellen, ob er die Berechtigung zum Aktualisieren der angegebenen Ressource hat. Sie können beispielsweise feststellen, ob der Benutzer die Berechtigung zum Aktualisieren von Artikelkommentaren hat:
/** * 判断用户是否有权限做出此请求。 * * @return bool */ public function authorize(){ $comment = Comment::find($this->route('comment')); return $comment && $this->user()->can('update', $comment); }
Da alle Formularanforderungen die Anforderungsbasisklasse in Laravel erben, können wir die Methode user
verwenden, um die aktuelle Authentifizierung zu erhalten. Protokolliert im Benutzer. Beachten Sie auch den Aufruf der Methode route
im obigen Beispiel. Mit dieser Methode können Sie die auf der aufgerufenen Route definierten URI-Parameter abrufen, z. B. den Parameter {comment}
im folgenden Beispiel:
Route::post('comment/{comment}');
Wenn die Methode authorize
false
zurückgibt, wird automatisch a zurückgegeben Wenn eine HTTP-Antwort mit dem Statuscode 403 enthalten ist, wird die Controller-Methode nicht ausgeführt.
Wenn Sie vorhaben, die Autorisierungslogik in anderen Teilen der Anwendung zu verwalten, kehren Sie einfach authorize
von der true
-Methode zurück:
/** * 判断用户是否有权限进行此请求。 * * @return bool */ public function authorize(){ return true; }
{tip} Sie können <🎜 fragen > Methode, die alle erforderlichen Abhängigkeiten übergibt. Sie werden automatisch durch den von Laravel bereitgestellten Service-Container gelöst.
authorize
Benutzerdefinierte Fehlermeldung
Sie können die Fehlermeldung anpassen, indem Sie die Methode messages
der Formularanforderung überschreiben. Diese Methode sollte ein Array von Eigenschafts-/Regelpaaren und die entsprechenden Fehlermeldungen zurückgeben:
/** * 获取已定义验证规则的错误消息。 * * @return array */ public function messages(){ return [ 'title.required' => 'A title is required', 'body.required' => 'A message is required', ]; }
Benutzerdefinierte Validierungseigenschaften
Wenn Sie den :attribute
-Teil der Validierungsnachricht durch einen benutzerdefinierten Eigenschaftsnamen ersetzen möchten, können Sie attributes
überschreiben Methode zum Angeben eines benutzerdefinierten Namens. Diese Methode sollte ein Array von Eigenschafts-/Namenspaaren zurückgeben:
/** * 获取验证错误的自定义属性。 * * @return array */ public function attributes(){ return [ 'email' => 'email address', ]; }
Erstellen Sie den Validator manuell
, wenn Sie dies nicht tun Wenn Sie die validate
-Methode für die Anfrage nicht verwenden möchten, können Sie über die Validator
-Fassade manuell ein Validatorbeispiel erstellen.
Verwenden Sie die Validator
-Methode an der make
-Fassade, um ein Validatorbeispiel zu erstellen:
<?php namespace App\Http\Controllers;use Validator; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class PostController extends Controller{ /** * 保存一篇新的博客文章。 * * @param Request $request * @return Response */ public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } // Store the blog post... } }
Der erste an die make
-Methode übergebene Parameter sind die Daten, die überprüft werden müssen. Der zweite Parameter ist die Validierungsregel für die Daten.
Wenn die Validierung fehlschlägt, können Sie die withErrors
-Methode verwenden, um die Fehlermeldung an die Sitzung zu senden. Nach der Umleitung mit dieser Methode wird die Variable $errors
automatisch mit der Ansicht geteilt und Sie können diese Nachrichten dem Benutzer anzeigen. Die withErrors
-Methode akzeptiert einen Validator, MessageBag
oder PHP Array
.
Automatische Weiterleitung
Wenn Sie die Validatorinstanz manuell erstellen und die Methode validates
verwenden möchten Wenn eine automatische Umleitung bereitgestellt wird, können Sie die validate
-Methode im vorhandenen Validator-Beispiel aufrufen. Wenn die Überprüfung fehlschlägt, wird der Benutzer automatisch weitergeleitet. Bei einer AJAX-Anfrage wird eine JSON-formatierte Antwort zurückgegeben.
Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ])->validate();
Benanntes Fehlerpaket
Wenn Sie mehrere Formulare auf einer Seite haben, können Sie das Fehlerpaket benennen Rufen Sie die Fehlermeldung für ein bestimmtes Formular ab. Übergeben Sie der withErrors
-Methode einfach einen Namen als zweites Argument
return redirect('register') ->withErrors($validator, 'login');
und dann können Sie ihn von $errors
abrufen Erhalten Sie die Fehlermeldung der angegebenen Form in einer Variablen:
{{ $errors->login->first('email') }}
Post-Validation-Hook
Der Validator auch ermöglicht Ihnen das Hinzufügen einer Rückruffunktion, die nach erfolgreicher Überprüfung zulässig ist, sodass Sie mit dem nächsten Schritt der Überprüfung fortfahren oder sogar weitere Fehlermeldungen zur Nachrichtensammlung hinzufügen können. Um es zu verwenden, verwenden Sie einfach die Methode after
auf der Validierungsinstanz:
$validator = Validator::make(...);$validator->after(function ($validator) { if ($this->somethingElseIsInvalid()) { $validator->errors()->add('field', 'Something is wrong with this field!'); } }); if ($validator->fails()) { // }
Fehlermeldungen behandeln
Nachdem Sie die Validator
-Methode auf der errors
-Instanz aufgerufen haben, erhalten Sie eine IlluminateSupportMessageBag
-Instanz, die über verschiedene praktische Methoden zur Behandlung von Fehlermeldungen verfügt. $ errors
-Variablen werden automatisch für alle Ansichten bereitgestellt und sind auch eine Instanz der MessageBag
-Klasse.
Erste Fehlermeldung für ein bestimmtes Feld anzeigen
Um die erste Fehlermeldung für ein bestimmtes Feld anzuzeigen, können Sie first
verwenden Methode:
$errors = $validator->errors();echo $errors->first('email');
Alle Fehlermeldungen für ein bestimmtes Feld anzeigen
Wenn Sie ein Array aller Fehlermeldungen für ein bestimmtes Feld benötigen, können Sie die get
Methode:
foreach ($errors->get('email') as $message) { // }
Wenn Sie ein Array-Feld eines Formulars validieren möchten, können Sie *
verwenden So erhalten Sie alle Fehlermeldungen für jedes Array-Element:
foreach ($errors->get('attachments.*') as $message) { // }
Alle Fehlermeldungen für alle Felder anzeigen
Wenn Sie alle Fehlermeldungen für alle Felder erhalten möchten, können Sie dies tun Verwenden Sie all
Methode:
foreach ($errors->all() as $message) { // }
Bestimmen Sie, ob ein bestimmtes Feld eine Fehlermeldung enthält
has
Die Methode kann verwendet werden, um festzustellen, ob für ein bestimmtes Feld eine Fehlermeldung vorhanden ist:
if ($errors->has('email')) { // }
Benutzerdefinierte Fehlermeldung
Bei Bedarf können Sie zur Validierung auch benutzerdefinierte Fehlermeldungen anstelle der Standardwerte verwenden. Es gibt mehrere Möglichkeiten, eine benutzerdefinierte Nachricht anzugeben. Zunächst können Sie eine benutzerdefinierte Nachricht als dritten Parameter an die Methode Validator::make
übergeben:
$messages = [ 'required' => 'The :attribute field is required.', ]; $validator = Validator::make($input, $rules, $messages);
In diesem Beispiel wird der Platzhalter :attribute
durch den tatsächlichen Namen des Validierungsfelds ersetzt. Darüber hinaus können Sie in der Bestätigungsnachricht weitere Platzhalter verwenden. Beispiel:
$messages = [ 'same'=> 'The :attribute and :other must match.', 'size'=> 'The :attribute must be exactly :size.', 'between' => 'The :attribute value :input is not between :min - :max.', 'in'=> 'The :attribute must be one of the following types: :values', ];
Geben Sie eine benutzerdefinierte Nachricht für eine bestimmte Eigenschaft an.
Manchmal möchten Sie möglicherweise eine Fehlermeldung nur für ein bestimmtes Feld anpassen. Verwenden Sie einfach die „Punkt“-Syntax nach dem Attributnamen, um die Validierungsregeln anzugeben:
$messages = [ 'email.required' => 'We need to know your e-mail address!', ];
Anpassung in der Sprachdatei Defining Messages angeben
In den meisten Fällen werden Sie wahrscheinlich benutzerdefinierte Nachrichten in einer Sprachdatei angeben, anstatt sie direkt an diese zu übergeben Validator
. Platzieren Sie dazu Ihre Nachricht im Array resources/lang/xx/validation.php
innerhalb der Sprachdatei custom
.
'custom' => [ 'email' => [ 'required' => 'We need to know your e-mail address!', ], ],
Benutzerdefiniertes Attribut in der Sprachdatei angeben
Wenn Sie den :attribute
-Platzhalter der Validierungsnachricht durch einen benutzerdefinierten Attributnamen ersetzen möchten, können Sie dies in <🎜 tun > resources/lang/xx/validation.php
der Sprachdatei Geben Sie einen benutzerdefinierten Namen im Array an: attributes
'attributes' => [ 'email' => 'email address', ],
Benutzerdefinierte Werte in Sprachdateien angeben
Manchmal kann es erforderlich sein, den :value
-Platzhalter der Validierungsnachricht durch einen benutzerdefinierten Text für den Wert zu ersetzen. Wenn der Wert von payment_type
beispielsweise cc
ist, verwenden Sie die folgende Validierungsregel, die angibt, dass eine Kreditkartennummer erforderlich ist:
$request->validate([ 'credit_card_number' => 'required_if:payment_type,cc' ]);
Wenn diese Validierungsregel fehlschlägt, wird die folgende Fehlermeldung erzeugt :
当payment type为cc时,credit card number 不能为空。
Sie können eine benutzerdefinierte Wertdarstellung in der values
-Sprachdatei angeben, indem Sie ein validation
-Array definieren, anstatt cc
anzuzeigen Als Zahlungsartwert:
'values' => [ 'payment_type' => [ 'cc' => '信用卡' ], ],
Wenn nun die Validierungsregel fehlschlägt, wird die folgende Meldung ausgegeben:
当payment type 为信用卡时,credit card number不能为空。
Verfügbare Validierungsregeln
Im Folgenden finden Sie eine Liste aller verfügbaren Validierungsregeln und ihrer Funktionalität:
Akzeptiert
Aktive URL
Nachher (Datum)
Nach oder gleich (Datum)
Alpha
Alpha Dash
Alpha Numerisch
Array
Kaution
Vor (Datum)
Vor oder gleich (Datum)
Zwischen
Boolean
Bestätigt
Datum
Datum Gleich
Datumsformat
Unterschiedlich
Ziffern
Ziffern zwischen
Abmessungen (Bild Dateien)
Eindeutig
E-Mail
Existiert (Datenbank)
Datei
Gefüllt
Größer als
Größer als oder gleich
Bild (Datei)
In
In Array
Ganzzahl
IP Adresse
JSON
Kleiner als
Kleiner als oder gleich
Max
MIME Typen
MIME-Typ nach Dateierweiterung
Min.
Nicht vorhanden
Nicht Regex
Nullable
Numeric
Present
Regular Ausdruck
Erforderlich
Erforderlich, wenn
Erforderlich, sofern nicht
Erforderlich mit
Erforderlich mit Alle
Erforderlich ohne
Erforderlich ohne alle
Gleiche
Größe
Startet Mit
String
Zeitzone
Einzigartig (Datenbank)
URL
UUID
akzeptiert
muss Ja, Ein, 1 oder Wahr sein. Dies ist nützlich, wenn Sie bestätigen möchten, ob Sie mit den Nutzungsbedingungen einverstanden sind.
active_url
Gemäß der PHP-Funktion dns_get_record
muss das Validierungsfeld ein gültiges A oder AAAA haben aufzeichnen.
nach:Datum
Das Validierungsfeld muss ein Wert nach dem angegebenen Datum sein . Der Datumswert wird an die PHP-Funktion strtotime
übergeben:
'start_date' => 'required|date|after:tomorrow'
Anstatt das Feld zu übergeben, das mit dem Datum verglichen werden soll, können Sie mit strtotime
ein anderes Feld angeben, mit dem verglichen werden soll Verarbeitete Datumszeichenfolge:
'finish_date' => 'required|date|after:start_date'
after_or_equal:date
Das Validierungsfeld muss A sein Wert nach oder gleich dem angegebenen Datum. Weitere Informationen finden Sie in der Regel nachher.
Alpha
Das Validierungsfeld muss vollständig aus Buchstaben bestehen.
alpha_dash
Validierungsfelder können Buchstaben, Zahlen sowie Bindestriche (-) und Unterstriche (_) enthalten. ).
alpha_num
Das Validierungsfeld muss vollständig aus Buchstaben und Zahlen bestehen.
Array
Das zu validierende Feld muss ein PHP-Array sein.
Bail
Hört die Ausführung von Validierungsregeln nach dem ersten Validierungsfehler auf.
vor:Datum
Das Validierungsfeld muss vor dem angegebenen Datum liegen. Dieser Datumswert wird zur Berechnung an die PHP-Funktion strtotime
übergeben.
before_or_equal:date
Das Validierungsfeld muss vor oder mit dem angegebenen Datum liegen das gleiche Datum. Dieser Datumswert wird zur Berechnung an die PHP-Funktion strtotime
übergeben.
zwischen:min,max
Validierungsfeld Das Die Größe muss innerhalb der angegebenen min liegen Zwischen max. Strings, Zahlen, Arrays und Dateien werden mit der Methode size
berechnet.
boolean
Validierte Felder müssen in den booleschen Typ konvertierbar sein. Akzeptable Eingaben sind true
, false
, 1
, 0
, "1"
und "0"
.
bestätigt
Das Validierungsfeld muss ein passendes Feld foo_confirmation
haben. Wenn das Validierungsfeld beispielsweise password
ist, muss in der Eingabe ein passendes password_confirmation
-Feld vorhanden sein.
Datum
Gemäß der PHP-Funktion strtotime
muss das Validierungsfeld ein gültiges Datum sein.
date_equals:date
Das Validierungsfeld muss mit dem angegebenen Datum übereinstimmen. Das Datum wird an die PHP-Funktion strtotime
übergeben.
Datumsformat:Format
Das Validierungsfeld muss mit dem angegebenen Datumsformat übereinstimmen. Wenn Sie ein Feld validieren, sollten Sie nur date
oder date_format
verwenden, nicht beides.
anders:Feld
Das Validierungsfeld muss den gleichen Wert haben wie Feld verschiedene Werte.
Ziffern:Wert
Das Validierungsfeld muss numerisch<🎜 sein > und muss die exakte Länge von _value_ haben.
digits_between:min,max
Validierte Felder Die Die Länge muss innerhalb der angegebenenmin liegen und max.
AbmessungenDie zu überprüfende Datei muss ein Bild sein und den angegebenen Regeleinschränkungen entsprechen:
'avatar' => 'dimensions:min_width=100,min_height=200'Die verfügbaren Einschränkungen sind:
min_width, max_width, min_height, max_height, width, height, ratio.
Verhältnis Der Grenzwert sollte als Breite geteilt durch Höhe ausgedrückt werden. Dies kann durch die Verwendung eines Ausdrucks wie oder eines Floats wie 3/2
angegeben werden: 1.5
'avatar' => 'dimensions:ratio=3/2'Da diese Regel mehrere Argumente erfordert, können Sie
verwenden Die Methode erstellt fließend Regeln: Rule::dimensions
use Illuminate\Validation\Rule; Validator::make($data, [ 'avatar' => [ 'required', Rule::dimensions()->maxWidth(1000)->maxHeight(500)->ratio(3 / 2), ], ]);distinct Bei der Validierung eines Arrays darf das Validierungsfeld keine Duplikate enthalten Werte .
'foo.*.id' => 'distinct'E-MailDas Validierungsfeld muss eine ordnungsgemäß formatierte E-Mail-Adresse sein.
existiert:Tabelle,Spalte
Validierungsfelder müssen in der angegebenen Datenbanktabelle vorhanden sein.
Exists Rule Basic Usage
'state' => 'exists:states'
Wenn die Option column
nicht angegeben ist, wird der Feldname verwendet.
Benutzerdefinierte Tabellenfelder angeben
'state' => 'exists:states,abbreviation'
Manchmal müssen Sie möglicherweise eine bestimmte Datenbankverbindung angeben, die für „exists“-Abfragen verwendet werden soll. Sie können dies tun, indem Sie den Verbindungsnamen mit der „Punkt“-Syntax zum Tabellennamen hinzufügen:
'email' => 'exists:connection.staff,email'
Wenn Sie die von der Validierungsregel durchgeführte Abfrage anpassen möchten, können Sie die Klasse Rule
verwenden, um die zu definieren fließend regieren. Im folgenden Beispiel geben wir die Validierungsregeln auch als Array an, anstatt sie mit dem Zeichen |
zu trennen:
use Illuminate\Validation\Rule; Validator::make($data, [ 'email' => [ 'required', Rule::exists('staff')->where(function ($query) { $query->where('account_id', 1); }), ], ]);
Datei
Das zu überprüfende Feld muss eine erfolgreich hochgeladene Datei sein.
ausgefüllt
Validierungsfeld darf nicht leer sein, wenn es vorhanden ist.
gt:Feld
Das Validierungsfeld muss größer als das angegebene <🎜 sein >Feld . Beide Felder müssen vom gleichen Typ sein. Zeichenfolgen, Zahlen, Arrays und Dateien werden mit alle identisch ausgewertet. size
Feld
Validierungsfeld muss größer oder gleich dem angegebenen Wert seinFeld. Beide Felder müssen vom gleichen Typ sein. Zeichenfolgen, Zahlen, Arrays und Dateien werden mit alle identisch ausgewertet. size
foo,bar,...
Validierungsfelder müssen in der angegebenen Werteliste enthalten sein. Da diese Regel normalerweise erfordert, dass Sie ein Array erstellen, können Sie implode
verwenden Methoden erstellen fließend Regeln: Rule :: in
use Illuminate\Validation\Rule; Validator::make($data, [ 'zones' => [ 'required', Rule::in(['first-zone', 'second-zone']), ], ]);in_array:
anotherfield
Die zu validierenden Felder sind erforderlich. Existiert im Wert eines anderen Feldesanotherfield.
GanzzahlDas zu überprüfende Feld muss eine Ganzzahl sein. ipDas zu überprüfende Feld muss eine IP-Adresse sein. ipv4Das zu überprüfende Feld muss eine IPv4-Adresse sein. ipv6Das zu überprüfende Feld muss eine IPv6-Adresse sein.json
Das zu überprüfende Feld muss eine gültige JSON-Zeichenfolge sein.
lt:Feld
Das zu validierende Feld muss kleiner als das angegebene Feld sein . Beide Felder müssen vom gleichen Typ sein. String-, numerische, Array- und Dateigrößen werden mit der Methode size
berechnet und ausgewertet.
lte:field
Das zu validierende Feld muss kleiner oder gleich sein das angegebene Feld. Beide Felder müssen vom gleichen Typ sein. String-, numerische, Array- und Dateigrößen werden mit der Methode size
berechnet und ausgewertet.
max:Wert
Felder in der Validierung müssen kleiner oder gleich < sein 🎜>Wert. Strings, Zahlen, Arrays oder Dateigrößenberechnungen werden mit der Methode ausgewertet. size
text/plain,...
Verifizierte Dateien müssen mit Übereinstimmungen übereinstimmen einer der angegebenen MIME-Typen:'video' => 'mimetypes:video/avi,video/mpeg,video/quicktime'Um die hochgeladene Datei zu ermitteln Beim MIME-Typ wird der Inhalt der Datei gelesen, um den MIME-Typ zu ermitteln, der sich vom vom Client bereitgestellten MIME-Typ unterscheiden kann. Mime:
foo,bar,...
Verifizierte Dateien müssen einen MIME-Typ haben, der einer der aufgeführten Erweiterungen entspricht. Grundlegende Verwendung von MIME-Regeln'photo' => 'mimes:jpeg,bmp,png'
Auch wenn Sie möglicherweise nur die angegebene Erweiterung überprüfen müssen, überprüft diese Regel tatsächlich den MIME-Typ der Datei, indem sie die Datei liest Inhalt, um seinen MIME-Typ zu erraten. Das vollständige MIME finden Sie unter folgendem Link Liste der Typen und ihrer entsprechenden Erweiterungen:
https://svn.apache.org/repos/asf/httpd/htt...
Wert
Felder in der Validierung müssen einen Mindestwert haben. Strings, Zahlen, Arrays oder Dateigrößenberechnungen werden mit der Methode not_in:foo,bar,...
Das zu validierende Feld kann nicht in die angegebene Werteliste aufgenommen werden. Mit der-Methode können Regeln erstellt werden: Rule::notIn
use Illuminate\Validation\Rule; Validator::make($data, [ 'toppings' => [ 'required', Rule::notIn(['sprinkles', 'cherries']), ], ]);
not_regex:Muster
Die zu validierenden Felder dürfen nicht mit dem angegebenen regulären Ausdruck übereinstimmen.
Intern verwendet diese Regel PHP-preg_match
-Funktionen. Der eingegebene Wert sollte dem gleichen Format folgen, das für die Funktion preg_match
erforderlich ist, also auch gültige Trennzeichen enthalten. Zum Beispiel: 'email' => 'not_regex:/^. $/i'
.
Hinweis: Bei Verwendung des regex
/not_regex
-Musters kann es erforderlich sein, die Regeln in einem Array anzugeben, anstatt Pipe-Trennzeichen zu verwenden, insbesondere wenn der reguläre Ausdruck Pipe enthält Zeichen Fall.
nullable
Das validierte Feld kann null
sein. Dies ist besonders nützlich bei der Validierung grundlegender Datentypen wie Zeichenfolgen und Ganzzahlen, die Nullwerte enthalten können.
numerisch
Das zu validierende Feld muss numerisch sein.
vorhanden
Das zu validierende Feld muss in den Eingabedaten vorhanden sein, kann aber leer sein.
Regex:Muster
Das zu validierende Feld muss mit dem angegebenen regulären Ausdruck übereinstimmen übereinstimmen.
Intern verwendet diese Regel PHP-preg_match
-Funktionen. Der eingegebene Wert sollte dem gleichen Format folgen, das für die Funktion preg_match
erforderlich ist, also auch gültige Trennzeichen enthalten. Zum Beispiel: 'email' => 'regex:/^. @. $/i'
.
Hinweis: Wenn Sie die Regel regex
verwenden, müssen Sie ein Array anstelle des Trennzeichens |
verwenden, insbesondere wenn der reguläre Ausdruck das Zeichen |
enthält.
erforderlich
Das zu validierende Feld muss in den Eingabedaten vorhanden sein und darf nicht leer sein. Ein Feld gilt als „leer“, wenn eine der folgenden Bedingungen erfüllt ist:
- hat den Wert
null
. - value ist eine leere Zeichenfolge. Der
- -Wert ist ein leeres Array oder ein leeres
Countable
-Objekt. - Der Wert ist die hochgeladene Datei ohne Pfad.
erforderlich_wenn:ein anderes Feld,Wert,.. .
wenn Das Feld anotherfield entspricht jedem Wert und das zu überprüfende Feld muss vorhanden und darf nicht leer sein.
Wenn Sie eine komplexere Bedingung für die required_if
-Regel erstellen möchten, können Sie die Rule::requiredIf
-Methode verwenden. Diese Methode akzeptiert einen booleschen Wert oder Abschluss. Beim Übergeben eines Abschlusses sollte true
oder false
zurückgegeben werden, um zu bestätigen, ob das Feld validiert werden muss:
use Illuminate\Validation\Rule; Validator::make($request->all(), [ 'role_id' => Rule::requiredIf($request->user()->is_admin),]); Validator::make($request->all(), [ 'role_id' => Rule::requiredIf(function () use ($request) { return $request->user()->is_admin; }), ]);
required_unless:anotherfield,value,...
wenn das Feld anotherfield keinem der entspricht value , das zu überprüfende Feld muss vorhanden und darf nicht leer sein.
required_with:foo,bar,...
Das validierte Feld muss vorhanden sein und darf nur dann leer sein, wenn eines der anderen angegebenen Felder vorhanden ist.
required_with_all:foo,bar,...
Das validierte Feld muss erscheinen und darf nur dann leer sein, wenn alle anderen angegebenen Felder erscheinen.
erforderlich_ohne:foo,bar,...
Das validierte Feld muss nur dann angezeigt werden und darf nicht leer sein, wenn kein anderes angegebenes Feld angezeigt wird.
required_without_all:foo,bar,...
Das überprüfte Feld muss angezeigt werden und darf nur dann leer sein, wenn alle anderen angegebenen Felder nicht angezeigt werden.
gleich:Feld
Das zu validierende Feld muss mit dem angegebenen Feld übereinstimmen.
Größe:Wert
Das zu validierende Feld muss einen Wert haben, der mit dem übereinstimmt gegebener Wert Größe. Bei Zeichenfolgen entspricht der Wert der Anzahl der Zeichen. Bei Zahlen entspricht der Wert dem angegebenen ganzzahligen Wert. Bei Arrays entspricht die Größe dem count
-Wert des Arrays. Bei Dateien entspricht die Größe der Dateigröße in KB.
starts_with:foo,bar,...
Das zu validierende Feld muss mit einem der angegebenen Werte beginnen.
Zeichenfolge
Das zu überprüfende Feld muss eine Zeichenfolge sein. Wenn dieses Feld null
sein darf, muss diesem Feld die nullable
-Regel zugewiesen werden.
Zeitzone
Das zu validierende Feld muss eine gültige Zeitzonenkennung basierend auf der PHP-Funktion sein timezone_identifiers_list
.
unique:table,column,außer,idColumn
Felder, die in der angegebenen Datenbank validiert werden sollen Muss in der Tabelle eindeutig sein. Wenn column
nicht angegeben ist, wird der Name des Feldes selbst verwendet.
Benutzerdefinierte Felder angeben
'email' => 'unique:users,email_address'
Benutzerdefinierte Datenbankverbindung
Manchmal muss möglicherweise die Datenbank für die Validator-Abfrageeinstellungen erstellt werden für individuelle Verbindungen. Im obigen Beispiel entspricht das Festlegen von unique:users
als Validierungsregel der Verwendung der Standarddatenbankverbindung zum Abfragen der Datenbank. Wenn Sie es ändern möchten, verwenden Sie die „Punkt“-Methode, um die Verbindung und den Tabellennamen anzugeben:
'email' => 'unique:connection.users,email_address'
Erzwingen Sie, dass die Unique-Regel die angegebene ID ignoriert:
Manchmal möchten Sie möglicherweise die angegebene ID ignorieren, wenn Sie die Eindeutigkeit des Felds überprüfen. Die Seite „Profil aktualisieren“ enthält beispielsweise Ihren Benutzernamen, Ihre E-Mail-Adresse und Ihren Standort. An dieser Stelle möchten Sie überprüfen, ob der aktualisierte E-Mail-Wert eindeutig ist. Wenn der Benutzer nur das Feld „Benutzername“, nicht aber das E-Mail-Feld ändert, besteht keine Notwendigkeit, einen Validierungsfehler auszulösen, da der Benutzer bereits Eigentümer der E-Mail ist.
Verwenden Sie die Klasse Rule
, um Regeln zu definieren, um den Validator anzuweisen, die Benutzer-ID zu ignorieren. In diesem Beispiel werden Validierungsregeln als Array angegeben, anstatt |-Zeichen zu verwenden, um sie zu trennen:
use Illuminate\Validation\Rule; Validator::make($data, [ 'email' => [ 'required', Rule::unique('users')->ignore($user->id), ], ]);
{tip} Sie sollten niemals benutzergesteuerte Anforderungseingaben an die
ignore
-Methode übergeben. Stattdessen sollten Sie nur vom System generierte eindeutige IDs, wie z. B. Auto-Inkrement-IDs oder UUIDs, von Eloquent-Modellinstanzen übergeben. Andernfalls ist Ihre Anwendung anfällig für SQL-Injection-Angriffe.
Anstatt den Wert des Modellschlüssels an die ignore
-Methode zu übergeben, können Sie die gesamte Modellinstanz übergeben. Laravel extrahiert automatisch den Primärschlüssel aus dem Modell:
Rule::unique('users')->ignore($user)
Wenn Ihre Datentabelle einen anderen Primärschlüsselnamen als id
verwendet, geben Sie beim Aufruf der Methode ignore
den Namen des Felds an:
Rule::unique('users')->ignore($user->id, 'user_id')
Standardmäßig prüft die unique
-Regel, ob Spalten, die mit dem Namen der zu validierenden Eigenschaft übereinstimmen, eindeutig sind. Sie können jedoch einen anderen Spaltennamen als zweites Argument an die unique
-Methode übergeben:
Rule::unique('users', 'email_address')->ignore($user->id),
Fügen Sie eine zusätzliche Where-Anweisung hinzu:
Sie können auch < 🎜 übergeben >-Methode gibt zusätzliche Abfragebedingungen an. Zum Beispiel fügen wir where
als Einschränkung für account_id
hinzu: 1
'email' => Rule::unique('users')->where(function ($query) { return $query->where('account_id', 1); })url Das Feld Zur Validierung muss es sich um eine gültige URL handeln. uuid Das Validierungsfeld muss gültig sein. RFC 4122 (Version 1, 3, 4 oder 5) generisch Eindeutig Bezeichner (UUID). Regeln basierend auf Bedingungen hinzufügen
Validieren, falls vorhanden
In einigen Fällen können Validierungsprüfungen nur für ein Feld durchgeführt werden, wenn im Array vorhanden ist. Dies kann durch Hinzufügen von sometimes
zur Regelliste erreicht werden:
$v = Validator::make($data, [ 'email' => 'sometimes|required|email',]);
Im obigen Beispiel wird das Feld email
nur validiert, wenn es im Array $data
vorhanden ist.
{Tipp} Wenn Sie versuchen, ein Feld zu validieren, das immer vorhanden sein sollte, aber möglicherweise leer ist, lesen Sie bitte die Hinweise zu optionalen Feldern
Komplexe bedingte Validierung
Manchmal müssen Sie möglicherweise Validierungsregeln hinzufügen, die auf einer komplexeren bedingten Logik basieren. Beispielsweise möchten Sie möglicherweise, dass ein bestimmtes Feld nur dann erforderlich ist, wenn der Wert eines anderen Felds 100 überschreitet. Oder wenn ein bestimmtes Feld vorhanden ist, können die anderen beiden Felder den angegebenen Wert haben. Das Hinzufügen solcher Überprüfungsbedingungen ist nicht schwierig. Erstellen Sie zunächst eine Instanz von Validator
mithilfe einer statischen Regel:
$v = Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]);
Nehmen wir an, wir haben eine Webanwendung, die für Spielesammler entwickelt wurde. Wenn ein Spielesammler mehr als hundert Spiele besitzt, möchten wir ihn bitten, zu erklären, warum er so viele Spiele besitzt. Sie könnten beispielsweise einen Spielevertrieb betreiben oder einfach nur Spaß am Sammeln haben. Um diese Validierungsanforderung unter bestimmten Bedingungen hinzuzufügen, können Sie die Validator
-Methode für die sometimes
-Instanz verwenden.
$v->sometimes('reason', 'required|max:500', function ($input) { return $input->games >= 100; });
Der erste Parameter, der an die sometimes
-Methode übergeben wird, ist der Feldname, der für die Validierung verwendet werden soll. Der zweite Parameter ist die Validierungsregel, die wir verwenden möchten. 闭包
wird als dritter Parameter übergeben. Wenn true
zurückgegeben wird, werden zusätzliche Regeln hinzugefügt. Mit dieser Methode ist es einfach, komplexe bedingte Validierungen zu erstellen. Sie können sogar mehreren Feldern gleichzeitig eine bedingte Validierung hinzufügen:
$v->sometimes(['reason', 'cost'], 'required', function ($input) { return $input->games >= 100; });
{tip} Das an
闭包
übergebene Argument$input
ist eine Instanz vonIlluminateSupportFluent
und kann für den Zugriff auf Ihre Eingabe verwendet werden oder Dateiobjekt.
Arrays validieren
Es ist nicht schwierig, Felder zu validieren, bei denen die Eingabe des Formulars eine ist Array. Sie können die „Punkt“-Methode verwenden, um Eigenschaften in einem Array zu validieren. Wenn die eingehende HTTP-Anfrage beispielsweise das Feld photos[profile]
enthält, kann es wie folgt überprüft werden:
$validator = Validator::make($request->all(), [ 'photos.profile' => 'required|image', ]);
Sie können auch jedes Element im Array überprüfen. Um beispielsweise zu überprüfen, ob jede E-Mail im angegebenen Array-Eingabefeld eindeutig ist, können Sie Folgendes tun:
$validator = Validator::make($request->all(), [ 'person.*.email' => 'email|unique:users', 'person.*.first_name' => 'required_with:person.*.last_name', ]);
Ebenso können Sie *
verwenden, wenn Sie Verifizierungsinformationen in der Sprachdatei definieren Zeichen verwenden Sie eine einzelne Validierungsnachricht für Array-basierte Felder:
'custom' => [ 'person.*.email' => [ 'unique' => 'Each person must have a unique e-mail address', ] ],
Benutzerdefinierte Validierungsregel
Verwendung von Regelobjekten
Laravel bietet viele nützliche Validierungsregeln und unterstützt auch benutzerdefinierte Regeln. Eine Möglichkeit, benutzerdefinierte Validierungsregeln zu registrieren, ist die Verwendung eines Regelobjekts. Neue Regelobjekte können mit dem Artisan-Befehl make:rule
generiert werden. Als Nächstes verwenden wir diesen Befehl, um eine Regel zu generieren, die überprüft, ob eine Zeichenfolge in Großbuchstaben geschrieben ist. Laravel speichert neue Regeln im Verzeichnis app/Rules
:
php artisan make:rule Uppercase
Sobald die Regel erstellt ist, können wir ihr Verhalten definieren. Das Regelobjekt enthält zwei Methoden: passes
und message
. Die passes
-Methode empfängt den Attributwert und -namen und gibt true
oder false
zurück, je nachdem, ob der Attributwert den Regeln entspricht. Die message
-Methode sollte die Validierungsfehlermeldung zurückgeben, die verwendet werden soll, wenn die Validierung fehlschlägt:
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class Uppercase implements Rule{ /** * 判断验证规则是否通过。 * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { return strtoupper($value) === $value; } /** * 获取验证错误消息。 * * @return string */ public function message() { return 'The :attribute must be uppercase.'; } }
Wenn Sie natürlich eine Fehlermeldung aus der Übersetzungsdatei zurückgeben möchten, können Sie die Hilfsfunktion über aufrufen message
Methode trans
:
/** * 获取验证错误消息。 * * @return string */ public function message(){ return trans('validation.uppercase'); }
Sobald das Regelobjekt definiert ist, können Sie eine Instanz des Regelobjekts zusammen mit anderen Validierungsregeln an den Validator übergeben:
use App\Rules\Uppercase;$request->validate([ 'name' => ['required', 'string', new Uppercase], ]);
Abschlüsse verwenden
Wenn Sie die Funktionalität benutzerdefinierter Regeln nur einmal in Ihrer Anwendung benötigen, können Sie stattdessen Abschlüsse verwenden. Keine Regel Objekt. Der Abschluss erhält den Namen des Attributs, dessen Wert bei fehlgeschlagener Validierung $fail
im Callback verwendet werden soll:
$validator = Validator::make($request->all(), [ 'title' => [ 'required', 'max:255', function ($attribute, $value, $fail) { if ($value === 'foo') { $fail($attribute.' is invalid.'); } }, ], ]);
Verwenden der Erweiterung
Eine andere Möglichkeit, benutzerdefinierte Validierungsregeln zu registrieren, ist die Verwendung der Validator
-Fassade extend
Methode. Verwenden wir diese Methode, um benutzerdefinierte Validierungsregeln im Service-Container zu registrieren:
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Validator; class AppServiceProvider extends ServiceProvider{ /** * 引导任何应用程序。 * * @return void */ public function boot() { Validator::extend('foo', function ($attribute, $value, $parameters, $validator) { return $value == 'foo'; }); } /** * 注册服务提供器。 * * @return void */ public function register() { // } }
Der benutzerdefinierte Validierungsabschluss erhält vier Parameter: den Namen des zu überprüfenden Attributs $attribute
, den Wert des Attributs $value
, das an die Validierungsregel übergebene Parameterarray $parameters
und die tatsächliche Spalte Validator
.
Neben der Verwendung von Abschlüssen können Sie auch Klassen und Methoden an die extend
-Methode übergeben:
Validator::extend('foo', 'FooValidator@validate');
Fehlermeldungen definieren
Sie auch Für benutzerdefinierte Regeln müssen Fehlermeldungen definiert werden. Sie können diese Funktionalität erreichen, indem Sie ein benutzerdefiniertes Inline-Nachrichtenarray verwenden oder einen Eintrag in der Validierungssprachendatei hinzufügen. Die Nachricht sollte an erster Stelle im Array platziert werden, nicht im Array custom
, das nur zum Speichern attributspezifischer Fehlermeldungen verwendet wird:
"foo" => "Your input was invalid!", "accepted" => "The :attribute must be accepted.", // 其余的验证错误消息...
Beim Erstellen einer benutzerdefinierten Validierungsregel müssen Sie möglicherweise manchmal benutzerdefinierte Platzhalter definieren für Fehlermeldungen. Dies kann durch Erstellen eines benutzerdefinierten Validators und anschließenden Aufruf der Validator
-Methode an der replacer
-Fassade erfolgen. Sie können die folgenden Vorgänge in der boot
-Methode des Service-Containers ausführen:
/** * 启动应用程序。 * * @return void */ public function boot(){ Validator::extend(...); Validator::replacer('foo', function ($message, $attribute, $rule, $parameters) { return str_replace(...); }); }
Implizite Erweiterung
Wenn das zu überprüfende Attribut nicht vorhanden ist oder einen durch die required
-Regel definierten Nullwert enthält, gelten standardmäßig die normalen Validierungsregeln, einschließlich self The Definitionserweiterung wird nicht ausgeführt. Beispielsweise validiert die unique
-Regel den null
-Wert nicht:
$rules = ['name' => 'unique']; $input = ['name' => null]; Validator::make($input, $rules)->passes(); // true
Wenn Sie verlangen, dass eine Eigenschaft validiert wird, auch wenn sie leer ist, müssen Sie implizieren, dass die Eigenschaft ist erforderlich. Um eine solche „implizite“ Erweiterung zu erstellen, verwenden Sie die Methode Validator::extendImplicit()
:
Validator::extendImplicit('foo', function ($attribute, $value, $parameters, $validator) { return $value == 'foo'; });
{note} Eine „implizite“ Erweiterung impliziert nur, dass die Eigenschaft erforderlich ist. Ob es fehlt oder null ist, liegt bei Ihnen.