Laravel验证返回空的错误数组


Laravel validation returns empty error array

我使用laravel 5构建了一个用户日志页面,并使用validate()函数验证了电子邮件、密码和first_name字段。

用户控制器

class UserController extends Controller{
    public function getDashBoard(){
        return view('dashboard');
    }
    public function postSignUp(Request $request){
        $this->validate($request,[
            'email'=>'required|email|unique:users',
            'first_name'=>'required|max:120',
            'password'=>'required:min:4'
        ]);
        $user=new User();
        $user->email=$request['email'];;
        $user->first_name=$request['first_name'];
        $user->password=bcrypt($request['password']);;
        $user->save();
        Auth::login($user);
        return redirect()->route('dashboard');  
    }
 }

此函数工作正常,当数据无效时,返回上一页。我使用以下代码在welcome.blade.php文件中显示错误消息。

    @if(count($errors)>0)
        <p>Error occurred</p>            
    @endif

如果出现验证错误,它会返回到欢迎页面,但不会显示上述错误消息(当我检查时,count($errors)始终等于0)。这里有什么问题?

routes.php

Route::group(['middleware'=>['web']],function(){
    Route::get('/', function () {
        return view('welcome');
    });
    Route::post('/signup',['uses'=>'UserController@postSignUp','as'=>'signup']);
    Route::post('/signin',['uses'=>'UserController@postSignIn','as'=>'signin']);
    Route::get('/dashboard',[
        'uses'=>'UserController@getDashboard','as'=>'dashboard'
    ]);
});

试试这个:

$validator = Validator::make($request->all(), [
        'email'=>'required|email|unique:users',
        'first_name'=>'required|max:120',
        'password'=>'required:min:4'
    ]);
    if ($validator->fails()) {
        return redirect('/signin')
                    ->withErrors($validator)
                    ->withInput();
    }
    $user=new User();
    $user->email=$request['email'];;
    $user->first_name=$request['first_name'];
    $user->password=bcrypt($request['password']);;
    $user->save();
    Auth::login($user);
    return redirect()->route('dashboard');  

让我知道它是否能帮助您