Laravel 5.2控制器验证

时间:2016-08-28 20:20:39

标签: php laravel

我没有这个控制器的视图。我想使用Laravel验证来检查变量。并通过在控制器中返回字符串来显示自定义错误。(我不使用视图,刀片,会话,...我只是返回字符串)

    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 个答案:

答案 0 :(得分: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();
}

现在您可以访问您定义的错误消息,如果没有覆盖,则可以访问默认消息。