laravel 表單驗證
阿新 • • 發佈:2018-12-29
以下為我建立的一個 API Validator 的 VIM Code Snippet
$rsp = ['err_code' => 0, 'err_msg' => 'OK',];
$input = $request->all();
$rules = [
'name' => 'required',
'person_tel' =>'required|regex:/^1[0-9]{10}$/',
'code' => 'required|digits:6',
];
$messages = [
'name' => '請填寫公司名稱',
'person_tel' => '請填寫正確的手機號',
'code' => '請填寫正確的驗證碼',
];
$validator = Validator::make($input, $rules, $messages);
$validator->after(function ($validator) use ($request) {
$redis_code = Redis::get(env('APP_NAME').'sms'.$request->get('person_tel'));
if ($redis_code != $request->get('code')) {
$validator->errors()->add('code', '驗證碼錯誤');
}
});
if ($validator->fails()) {
$rsp['err_code'] = -1;
$rsp['err_msg'] = "資料校驗失敗";
$rsp['data'] = $validator->errors()->all();
return response()->json($rsp);
}
為何要使用 validator after
after 的呼叫時機是在主動呼叫 fails 的時候,這樣做非常方便去新增一些我們業務相關的自定義校驗規則