首頁  >  文章  >  php框架  >  在FormRequest表單驗證器中取得url中的值

在FormRequest表單驗證器中取得url中的值

藏色散人
藏色散人轉載
2021-01-13 15:32:162003瀏覽

最近在自己做一個blog,根據 Laravel專案開發規範來寫」優雅」的程式碼。 專案的路由大概都是這樣的

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

驗證器用的是繼承FormRequest基底類別來驗證的,程式碼如下在FormRequest表單驗證器中取得url中的值

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' => '关键字已存在,请重新填写'
       ];
    }}
根據請求的方法不同來進行驗證

為了保持規範我在更新請求的時候的,並沒有把id放到form表單中,只放在了URL中,在官方文件中也有這樣的方法。

use Illuminate\Validation\Rule;
Validator::make($data, [
    'email' => [
        'required',
        Rule::unique('users')->ignore($user->id),
    ],]);
但是這個$user->id一直不知道怎麼獲取,在網上終於找到一個方法,符合我的要求

$this->route('id')

以上是在FormRequest表單驗證器中取得url中的值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除