2012-12-09 237 views
3

---自定義驗證類(應用程序/庫/ validator.php)---Laravel自定義驗證

class Validator extends Laravel\Validator { 
    public function validate_passwdU($attribute, $value, $parameters){ 
     $r_uppercase = '/[A-Z]/'; //Uppercase 
     $default_min = 1; 
     if(is_numeric($parameters[0])>=$default_min){ 
     $default_min = $parameters[0]; 
     } 
     return (preg_match_all($r_uppercase,$value, $matches)>=$default_min);  
    } 
} 

---應用程序/語言/ EN/validation.php ---

"passwdU" => "The :attribute must be at least :size uppercase characters." 

--- ---控制器

$rules = array(
     'passwd' => 'required|min:8|passwdU:2' 
    ); 

    $validation = Validator::make($input, $rules); 

    if ($validation->fails()) 
    { 
     return Redirect::to('URL')->with_errors($validation); 
    } 

--- ---輸入

的passwd = 11111111

--- ---查看

<pre> 
<?php print_r($errors); ?> 
</pre> 

--- ---輸出

Laravel\Messages Object 
(
    [messages] => Array 
    (
     [passwd] => Array 
      (
       [0] => validation.passwdU 
      ) 

    ) 
    [format] => :message 
) 

爲什麼我沒有獲取我在語言文件中定義的消息?

+1

作爲它的消息對象發送回你嘗試'print_r($ errors-> get('passwd'))' –

+0

@DavidBarker,\t Arr ay ( [0] => validation.passwdU ) –

+5

我發現這個問題,在我定義的語言「passwdU」=>「......」中,當文件被加載時,密鑰被轉換爲小寫「passwdu」=>「...」。 –

回答

0

傳遞消息的方法給視圖

return Redirect::to('login') 
    ->withErrors($validator->messages()) 

,並用GET方法

{{ $errors->get('email') }} 

爲我工作在打印:

The email field is required. 
+1

這是因爲'Validator'類*實現*'MessageProviderInterface' *接口*,傳遞' - > withErrors($ validator)'''。 –