2016-08-28 148 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。但是我怎么能理解哪个变量有错误或者是什么错误? –