Um benutzerdefinierte Validierungsregeln in Laravel zu erstellen und zu verwenden, können Sie folgende Schritte befolgen:
Definieren Sie die benutzerdefinierte Regel:
Sie können eine benutzerdefinierte Validierungsregel mit einem Regelobjekt definieren. Erstellen Sie eine neue Klasse, die Illuminate\Validation\Rules\Rule
erweitert. Wenn Sie beispielsweise validieren möchten, dass ein Feld ein bestimmtes Wort enthält, können Sie eine Klasse mit dem Namen ContainsWord
erstellen.
<code class="php">use Illuminate\Contracts\Validation\Rule; class ContainsWord implements Rule { private $word; public function __construct($word) { $this->word = $word; } public function passes($attribute, $value) { return stripos($value, $this->word) !== false; } public function message() { return "The :attribute must contain the word :word."; } }</code>
Verwenden Sie die benutzerdefinierte Regel:
Um die benutzerdefinierte Regel in Ihrem Controller oder Formularanforderung zu verwenden, können Sie die Regel instanziieren und an die validate
weitergeben.
<code class="php">use App\Rules\ContainsWord; $request->validate([ 'title' => ['required', new ContainsWord('Laravel')], ]);</code>
Verwenden der benutzerdefinierten Regel in Formularanforderung:
Wenn Sie Formularanfragen verwenden, können Sie die Regel in die rules
einbeziehen.
<code class="php">use App\Rules\ContainsWord; use Illuminate\Foundation\Http\FormRequest; class StorePostRequest extends FormRequest { public function rules() { return [ 'title' => ['required', new ContainsWord('Laravel')], ]; } }</code>
Die Verwendung von benutzerdefinierten Validierungsregeln in Laravel bietet mehrere Vorteile:
Wiederverwendbarkeit:
Ausdruckskraft:
Spezifität:
Konsistenz:
Testbarkeit:
Um das Validierungssystem von Laravel mit Ihren eigenen benutzerdefinierten Regeln zu erweitern, können Sie folgende Ansätze befolgen:
Verwenden von Regelobjekten:
Illuminate\Validation\Rules\Rule
erweitert. Dies ist die bevorzugte Methode für komplexe Regeln.Schließungen verwenden:
Für einfache Regeln können Sie eine Schließung innerhalb Ihrer Validierungsregeln definieren.
<code class="php">$request->validate([ 'title' => [ 'required', function ($attribute, $value, $fail) { if (stripos($value, 'Laravel') === false) { $fail('The '.$attribute.' must contain the word "Laravel".'); } }, ], ]);</code>
Validator erweitern:
Sie können die Validator
-Fassade erweitern, um neue Regeln hinzuzufügen, die während Ihrer Bewerbung verwendet werden können.
<code class="php">use Illuminate\Support\Facades\Validator; Validator::extend('contains_word', function ($attribute, $value, $parameters, $validator) { $word = $parameters[0]; return stripos($value, $word) !== false; }); Validator::replacer('contains_word', function ($message, $attribute, $rule, $parameters) { return str_replace(':word', $parameters[0], $message); });</code>
Sie können dann die benutzerdefinierte Regel in Ihrer Validierung verwenden.
<code class="php">$request->validate([ 'title' => 'required|contains_word:Laravel', ]);</code>
Es gibt mehrere Ressourcen, in denen Sie Beispiele und Tutorials zur Implementierung benutzerdefinierter Validierungsregeln in Laravel finden können:
Laravel Offizielle Dokumentation:
Laracasts:
Laravel News:
Github:
Stapelüberlauf:
Laravel Community Blogs:
Durch die Nutzung dieser Ressourcen können Sie ein tieferes Verständnis dafür erlangen, wie benutzerdefinierte Validierungsregeln in Laravel effektiv implementiert werden können.
Das obige ist der detaillierte Inhalt vonWie kann ich in Laravel benutzerdefinierte Validierungsregeln erstellen und verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!