【问题标题】:Laravel validation returns empty error arrayLaravel 验证返回空错误数组
【发布时间】:2016-07-31 11:03:32
【问题描述】:

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

用户控制器

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

如果出现验证错误,它会返回到欢迎页面 bt 上面的错误消息不显示(当我检查时,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'
    ]);
});

【问题讨论】:

  • 你试过@if($errors-&gt;has())而不是计算它吗?
  • 它也不起作用
  • $errors 的类型是什么?它应该是ViewErrorBag 的一个实例

标签: php laravel laravel-5


【解决方案1】:

试试这个:

$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');  

如果对你有帮助,请告诉我

【讨论】:

  • 尝试设置:return redirect('/') ->withErrors($validator) ->withInput();而不是上面的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 2020-05-23
  • 2018-04-30
相关资源
最近更新 更多