Laravel Validator 使用筆記

悠悠山雨發表於2017-06-29

擴充套件

// 擴充套件驗證方法
Validator::extend('valid_code',function ($attribute, $value, $parameters, $validator){
    return strlen($value) == 5;
},'編號不符合 :valid_year 年的要求');

// extendImplicit與extend的區別: 即使該欄位規則中沒有required也執行該驗證
Validator::extendImplicit('valid_code',function ($attribute, $value, $parameters, $validator){
    return strlen($value) == 5;
},'編號不符合 :valid_year 年的要求');

// 替換該驗證規則中的佔位符
Validator::replacer('valid_code', function($message, $attribute, $rule, $parameters) {
    return str_replace(':valid_year','2017',$message);
});

$validator = Validator::make($input,[
    'code'=>'required|valid_code',
]);
// code.valid_code 若錯誤返回資訊"編號不符合 2017 年的要求"

定義驗證詳解

$validatorStatus = $validator->passes(); //(bool)執行驗證並返回是否驗證成功
$validatorErrors = $validator->errors()->all();//(array)返回獲得的錯誤資訊陣列
if(!$validatorStatus){
    return redirect('login')
        ->withErrors($validatorErrors)
        ->withInput();
}

驗證與獲取結果

$validator = Validator::make($input,[
    'code'=>'required|captcha',
],[
    'code.captcha'=>'The :attribute is invalid .'
],[
    'code'=>'code of captcha'
]);
// The code of captcha is invalid .

Validator::make($rules,$messages,$customAttributes)

  • rules: 定義驗證規則
  • messages: 定義錯誤資訊
  • customAttributes: 定義欄位別名用於替換錯誤資訊中的:attribute.

若驗證失敗返回錯誤資訊為The code of captcha is invalid .
不定義customAttributes錯誤資訊為The code is invalid .

個人部落格 http://blog.xcxxkj.com
程式碼倉庫 https://github.com/sleep-cat

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章