提问者:小点点

从控制器重定向后显示Laravel中的错误消息


如何在Laravel中重定向的视图中显示验证消息?

这是我在控制器中的函数

public function registeruser()
{
    $firstname = Input::get('firstname');
    $lastname = Input::get('lastname');
    $data  =  Input::except(array('_token')) ;
    $rule  =  array(
                'firstname'       => 'required',
                'lastname'         => 'required',
                   ) ;
    $validator = Validator::make($data,$rule);
    if ($validator->fails())
    {
    $messages = $validator->messages();
    return Redirect::to('/')->with('message', 'Register Failed');
    }
    else
    {
    DB::insert('insert into user (firstname, lastname) values (?, ?)',
                                array($firstname, $lastname));
    return Redirect::to('/')->with('message', 'Register Success');
    }
    }

我知道下面给出的代码是一个糟糕的尝试,但我如何修复它,我遗漏了什么

@if($errors->has())
    @foreach ($errors->all() as $error)
        <div>{{ $error }}</div>
    @endforeach
@endif

共3个答案

匿名用户

拉维尔4号

当验证失败时,返回验证错误。

if($validator->fails()) {
    return Redirect::back()->withErrors($validator);
}

您可以捕获视图上的错误,使用

@if($errors->any())
    {{ implode('', $errors->all('<div>:message</div>')) }}
@endif

更新

要在每个字段下显示错误,您可以这样做。

<input type="text" name="firstname">
@if($errors->has('firstname'))
    <div class="error">{{ $errors->first('firstname') }}</div>
@endif

为了更好的显示风格与css。

你可以参考这里的文档。

更新2

一次显示所有错误

@if($errors->any())
    {!! implode('', $errors->all('<div>:message</div>')) !!}
@endif

在每个字段下显示错误。

@error('firstname')
    <div class="error">{{ $message }}</div>
@enderror

匿名用户

如果要从您所在的同一控制器加载视图,请执行以下操作:

if ($validator->fails()) {
    return self::index($request)->withErrors($validator->errors());
}

如果您想快速显示所有错误,但需要更多的控制:

 @if ($errors->any())
     @foreach ($errors->all() as $error)
         <div>{{$error}}</div>
     @endforeach
 @endif

匿名用户

@if ($errors->has('category'))
    <span class="error">{{ $errors->first('category') }}</span>
@endif