2016-08-28 182 views
-2

我對這個控制器沒有看法。我想使用Laravel驗證來檢查變量。並通過控制器返回字符串顯示自定義錯誤(我不使用視圖,刀片,會議,...我只是返回字符串)Laravel 5.2驗證控制器

if(strlen($username) < 4) return '{"r": "US","msg": "username is short"}'; 
    if(strlen($username) > 64) return '{"r": "UL","msg": "username is long"}'; 
    if(preg_match("/(\S*\d+\S*[[:alpha:]]+\S*)|(\S*[[:alpha:]]+\S*\d+\S*)/", $password)) return '{"r": "P","msg": "wrong password"}'; 
    if(strlen($name) > 32) '{"r": "N","msg": "wrong name"}'; 
    if(strlen($address) > 200) '{"r": "A","msg": "wrong address"}'; 

我想是這樣的:

'username' => 'required|min:4|max:64|unique:users|regex:/[a-zA-Z]+[a-zA-Z0-9_]*/', 
    'email' => 'required|unique:users|email|min:8', 
    ... 

回答

1

你可以使用Validator外觀來驗證控制器中的任何請求。你也可以用你自己的消息來擴展它。

$validator = Validator::make($request->all(), [ 
    'username' => 'required|min:4|max:64|unique:users|regex:/[a-zA-Z]+[a-zA-Z0-9_]*/', 
    'email' => 'required|unique:users|email|min:8', 
], 
[ 
    'email.required' => 'Email is required', 
    'username.unique' => 'Username is taken' 
]); 

你甚至可以決定,要怎麼做,如果此驗證失敗

if ($validator->fails()) { 
    return redirect()->route('register') 
     ->withErrors($validator) 
     ->withInput(); 
} 

現在,如果你需要訪問這些錯誤消息,而不是,你可以這樣做:

if($validator->fails()) { 
    $errors = $validator->errors(); 
} 

現在你有權訪問您定義的錯誤消息,以及默認的錯誤消息(如果未覆蓋)。

+0

Tanx。但是我怎麼能理解哪個變量有錯誤或者是什麼錯誤? –