Wenn Sie einen Artikel erstellen und ihn direkt einreichen, ohne etwas einzugeben, erhalten Sie einen leeren Artikel ohne Fehlermeldung, was falsch ist. Führen Sie php artisan
in der Befehlszeile aus und Sie sehen eine Option make:request
zum Erstellen einer neuen Formularanforderungsklasse. Auf der Befehlszeile ausführen
<code>php artisan make:request CreateArticleRequest</code>
Die generierten Dateien befinden sich im Verzeichnis app/http/requests
. In der Datei sehen wir zwei Methoden:
<code> public function authorize() { return false; } public function rules() { return [ // ]; }</code>
authorize
Gibt an, ob der Benutzer beim Absenden des Formulars ein authentifizierter Benutzer sein muss. Wir benötigen keine Authentifizierung und geben true zurück. rules
ist unsere Regelmethode. Lassen Sie uns diese Methode ändern:
<code> public function authorize() { //修改为 true,表示不需要认证,或者是通过认证 return true; } public function rules() { return [ 'title' => 'required|min:3', 'body' => 'required', 'published_at' => 'required|date' ]; }</code>
Weitere Einschränkungen finden Sie in der Dokumentation von Laravel. Die oben genannten Einschränkungen bedeuten, dass title
eingegeben werden muss, mindestens 3 Zeichen, body
erforderlich ist, published_at
erforderlich ist und ein Datum ist.
In der Ansicht können wir jederzeit auf die Variable $errors
zugreifen, um festzustellen, ob ein Fehler vorliegt, und die Ansicht
<code> @if ($errors->any()) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif {{--使用我们添加的 illuminate\html 开源库--}} {!! Form::open(['url' => 'articles']) !!}</code>
Ändern Sie den Controller und führen Sie unsere Request-Klasse ein.
<code> public function store(Requests\CreateArticleRequest $request) { Article::create($request->all()); return redirect('articles'); }</code>
Senden Sie das Formular erneut, ohne etwas auszufüllen, und Sie sehen die Fehlermeldung.
Ändern Sie die Eingabeaufforderungsinformationen auf Chinesisch
zeigt die Fehlermeldung auf Englisch an. Tatsächlich berücksichtigt Laravel das Problem der Internationalisierung und ändert zunächst config/app.php
und
<code> 'locale' => 'zh',</code>
Stellen Sie die Sprache des Gebietsschemas auf Chinesisch ein, erstellen Sie dann einen neuen Ordner resources/lang
unter zh
, kopieren Sie die Datei resources/lang/en/validation.php
in das Verzeichnis zh
und ändern Sie Folgendes:
<code> "min" => [ "numeric" => "The :attribute must be at least :min.", "file" => "The :attribute must be at least :min kilobytes.", "string" => ":attribute 至少要包含 :min 字符。", "array" => "The :attribute must have at least :min items.", ], "required" => ":attribute 必须填写。",</code>
Andere können Sie selbst übersetzen. Senden Sie das leere Formular erneut und die Fehlermeldung ist auf Chinesisch. Und das Urteil von min:3
beträgt auch mindestens 3 chinesische Schriftzeichen.
--
Laravel integriert auch die validate
-Methode in den Controller. Mit anderen Worten, wir müssen die Anforderungsklasse nicht direkt im Controller generieren.
Controller ändern:
<code> //注意 Request 的命名空间,不要弄错了 public function store(\Illuminate\Http\Request $request) { $this->validate($request, [ 'title' => 'required|min:3', 'body' => 'required', 'published_at' => 'required|date' ]); Article::create($request->all()); return redirect('articles'); }</code>
Die Ergebnisse sind die gleichen, sodass eine einfache Überprüfung schneller abgeschlossen werden kann.
Das Obige hat die Grundlagen von Laravel 5 (11) vorgestellt – die Formularvalidierung, einschließlich ihrer Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.