Heim >PHP-Framework >Laravel >Wert in der URL im FormRequest-Formularvalidator abrufen

Wert in der URL im FormRequest-Formularvalidator abrufen

藏色散人
藏色散人nach vorne
2021-01-13 15:32:162041Durchsuche

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');

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

5705b8bddb444eeb674bbbff5cf462dfroute('id') 获取url占位符为id的数据
        switch ($this->method())
        {
            case  'POST' :
            {
                return [
                  'keyword' => 'required|unique:keywords'
                ];
            }
            case 'PUT':
            case 'PATCH':
            {
              return [
                'keyword' => [
                  'required',
                  Rule::unique('keywords')->ignore($this->route('id')),
                ],
              ];
            }
            case 'DELETE':
            case 'GET':
            default:
            {
                return [];
            }
        }
    }
    public function messages()
    {
       return [
           'keyword.required' => '关键字不能为空',
           'id.required' => 'id不能为空',
           'keyword.unique' => '关键字已存在,请重新填写'
       ];
    }}
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, [
    'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
    ],]);

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen