Heim >PHP-Framework >Laravel >Wert in der URL im FormRequest-Formularvalidator abrufen
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:
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), ],]);
$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!