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

SA_*_*A__ 30 php laravel blade laravel-4

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

这是我在Controller中的功能

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');
    }
    }
Run Code Online (Sandbox Code Playgroud)

我知道下面给出的代码是一个糟糕的尝试,但我怎么能解决它,我错过了什么

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

更新:如何在特定字段附近显示错误消息

Sus*_*yal 67

验证失败时返回验证错误.

if($validator->fails()) {
    return Redirect::back()->withErrors($validator);
}
Run Code Online (Sandbox Code Playgroud)

您可以使用查看视图中的错误

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

UPDATE

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

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

为了更好的显示风格与CSS.

您可以在这里参考文档.


And*_*rew 14

如果要从同一控制器加载视图,请使用以下命令:

if ($validator->fails()) {
    return self::index($request)->withErrors($validator->errors());
}
Run Code Online (Sandbox Code Playgroud)

而且,如果您想快速显示所有错误,但要多控制一些:

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


Vip*_*pro 8

Laravel 5.8.13推出新的 Laravel Blade 错误指令

// Before
@if ($errors->has('email'))
    <span>{{ $errors->first('email') }}</span>
@endif

// After:
@error('email')
    <span>{{ $message }}</span>
@enderror
Run Code Online (Sandbox Code Playgroud)


Ali*_*aza 7

为了让它看起来不错,你可以使用一些引导程序帮助

@if(count($errors) > 0 )
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
    <ul class="p-0 m-0" style="list-style: none;">
        @foreach($errors->all() as $error)
        <li>{{$error}}</li>
        @endforeach
    </ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)


小智 6

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
Run Code Online (Sandbox Code Playgroud)


小智 5

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

  • 请在答案中提供更多详细信息,以总结代码的作用. (3认同)
  • 请提供一些细节. (2认同)

小智 5

$validator = Validator::make($request->all(), [ 'email' => 'required|email', 'password' => 'required', ]);

if ($validator->fails()) { return $validator->errors(); }
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以像下面一样使用 html 标签进行打印:

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