Heim > PHP-Framework > Laravel > Hauptteil

Wert in der URL im FormRequest-Formularvalidator abrufen

藏色散人
Freigeben: 2021-01-14 08:53:55
nach vorne
1998 Leute haben es durchsucht

Vor kurzem erstelle ich selbst einen Blog und schreibe „eleganten“ Code gemäß den Entwicklungsspezifikationen des Laravel-Projekts. Das Routing des Projekts ist wahrscheinlich so:

Route::get('/keywords','KeywordsController@index');
Route::get('/keywords/create','KeywordsController@create');
Route::post('/keywords/store','KeywordsController@store');
Route::delete('/keywords/{id}','KeywordsController@destory');
Route::get('/keywords/{id}/edit','KeywordsController@edit');
Route::put('/keywords/{id}','KeywordsController@update');
Nach dem Login kopieren

Der Validator verwendet die FormRequest-Basisklasse zur Überprüfung. Der Code lautet wie folgt: Wert in der URL im FormRequest-Formularvalidator abrufen

<?php

namespace App\Http\Requests;use Illuminate\Validation\Rule;class KeywordRequest extends Request{
    public function rules()
    {
        //$this->route(&#39;id&#39;) 获取url占位符为id的数据
        switch ($this->method())
        {
            case  &#39;POST&#39; :
            {
                return [
                  &#39;keyword&#39; => &#39;required|unique:keywords&#39;
                ];
            }
            case &#39;PUT&#39;:
            case &#39;PATCH&#39;:
            {
              return [
                &#39;keyword&#39; => [
                  &#39;required&#39;,
                  Rule::unique(&#39;keywords&#39;)->ignore($this->route(&#39;id&#39;)),
                ],
              ];
            }
            case &#39;DELETE&#39;:
            case &#39;GET&#39;:
            default:
            {
                return [];
            }
        }
    }
    public function messages()
    {
       return [
           &#39;keyword.required&#39; => &#39;关键字不能为空&#39;,
           &#39;id.required&#39; => &#39;id不能为空&#39;,
           &#39;keyword.unique&#39; => &#39;关键字已存在,请重新填写&#39;
       ];
    }}
Nach dem Login kopieren

Die Überprüfung basiert auf verschiedenen Anforderungsmethoden. Um den Standard beizubehalten, habe ich die Anforderung aktualisiert und Die ID wird nicht im Formular platziert, sondern nur in der URL. Eine solche Methode gibt es auch in der offiziellen Dokumentation.

use Illuminate\Validation\Rule;
Validator::make($data, [
    &#39;email&#39; => [
        &#39;required&#39;,
        Rule::unique(&#39;users&#39;)->ignore($user->id),
    ],]);
Nach dem Login kopieren

Aber ich wusste nie, wie ich an diese $user->id komme. Endlich habe ich online eine Methode gefunden, die meinen Anforderungen entspricht

$this->route(&#39;id&#39;)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWert in der URL im FormRequest-Formularvalidator abrufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage