您好,登錄后才能下訂單哦!
使用laravel怎么對請求參數進行校驗?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
首先,我們需要建一個路由,暫時就叫"test"吧,然后test對應著TestController中的test方法。
Route::get('test', 'TestController@test'); class TestController extends Controller { public function test(Request $request) { } }
假設請求的參數中需要id、title這兩個參數,并且id必須是數字,且長度是1到10,并且是DB中的一行數據的主鍵、title必須是字符串,id和title都不能為空。一般的框架在寫的時候就會先取到id和title,然后對取到的id和title進行“是否是空”、“是否長度在1到10之間”、“通過id能否在數據庫中找到數據”等等繁瑣的校驗,利用laravel的“Validate”你只需要這樣就可以了。
public function test(Request $request) { $validate = Validator::make($request->all(), [ 'id' => 'required|integer|between:1,10', 'title' => 'required|string' ]);
如果沒有錯誤,就會繼續往下進行邏輯處理。假如說校驗不通過,例如id不在1和10之間,可以通過“validate”實例中的“errors()”方法,得到所有的錯誤,然后將錯誤放回給客戶端,如果想返回錯誤隊列中的頭一個錯誤,就寫$validate->errors()->first(),如果想返回所有錯誤列表,就寫“$validate->errors()->all()”。如下:
if($validate->fails()) { return $validate->errors()->first(); }
或者返回
if($validate->fails()) { return $validate->errors()->all(); }
假如請求參數中的id不是一個數字,而是字符串,結果就會出現:
你可能會想:返回結果能否使中文?答案當然是可以,你可以針對自己的程序,換成你任何想要的語言:
在項目中找到“resources”目錄下的“lang” 中的 “en”文件夾中的“validation.php”文件,
打開,然后找到這一行:
'integer' => 'The :attribute must be an integer.',
這句話除了“:attribute”是不是其他字和返回結果一模一樣?或許你已經猜到了:這就是你調用的‘integer'方法的返回結果,“:attribute”是個變量,是你傳的“id”!現在,你可以寫成任何語言,我把它改為中文:
'integer' => ':attribute 必須是數字!'
然后我們再看返回結果:
完美!只要你利用Validator的make方法,在請求參數數組中對應上‘integer'、“required”等字符串就可以利用laravel提供的服務,對請求參數進行“數字”、“判空”等校驗,laravel提供的眾多校驗方法,可以在laravel官網查詢。(ps:或者直接查詢validation.php這個文件!)
你或許還會想:我現在校驗了id是否為空,id是否是數字,我還想校驗id對應的數據能否在數據庫中查得到!這能實現嗎?
答案是:完全可以!在上篇文章中我介紹了laravel核心是一個IOC容器,你可以很方便的擴展任何服務注入到容器中!自定義validate服務也不例外!
我們首先創建一個provider
php artisan make:provider TestProvider
然后在boot方法里寫下:
public function boot() { Validator::extend('user', function($attribute, $value, $parameters) { return !is_null(User::find($value)); }); }
這行代碼很好理解吧:1、調用“Validator”的“extend”方法。2、傳給他倆個參數,一個是“user”,一個是返回值為boolen類型的callback 函數。3、函數中判斷User表中是否含有$value值數據,如果有,返回true,如果沒有,返回false。
然后在“config”的“app.php”中注冊上這個provider。(如果不清楚,可以去看前一篇文章“三分鐘學會laravel服務擴展”)
然后在validation.php中寫上:
'user' => '此用戶不存在!',
然后在校驗方法中添上“user”
$validate = Validator::make($request->all(), [ 'id' => 'required|integer|between:1,10|user', 'title' => 'required|string' ]);
數據庫中插入數據,開始檢驗:
Laravel 是一套簡潔、優雅的PHP Web開發框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。
關于使用laravel怎么對請求參數進行校驗問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。