【问题标题】:Laravel display validation errorLaravel 显示验证错误
【发布时间】:2018-12-05 03:32:55
【问题描述】:

我尝试使用此代码:

                @foreach($errors->all() as $error)
                    <li>{!!   $error !!}</li>
                @endforeach

并认为有这个:

我希望正确显示错误。 示例 名称为必填项。

在调试器中我可以看到。 如何在“需要名称”时替换validation.required

【问题讨论】:

  • 您是否使用验证器返回了控制器中的错误?
  • 我提出了新的请求,我在控制器中写了 -> return redirect('route');
  • 使用 $request->validate 方法查看下面的答案
  • 如果您在提交后返回,Laravel 当然会丢失数据。你期待什么?如果您真的想重定向,请执行with flashed session data
  • 好的,我知道了。验证器的错误仅以奇怪的形式(例如“validation.reqiured”)在视图中显示给我。请参阅上面的屏幕。

标签: php laravel forms validation


【解决方案1】:

你需要像这样在控制器方法中添加验证..

    $request->validate([
        'name' => 'required'
    ]);

然后您可以在视图中显示您的验证错误:

   @if ($errors->has('name'))
      <li>{{ $errors->first('name') }}</li>
   @endif

这也应该有效...

 <ul>
     @foreach ($errors->all() as $error)
         <li>{{ $error }}</li>
     @endforeach
</ul>

【讨论】:

  • @Ankit 为什么我们需要链接all()?如果$errors 是一个数组,我们可以简单地使用 foreach 循环。
  • @SujeetAgrahari $errors这里不是数组,$errors是一个包含所有验证错误的对象,您可以通过errors类提供的方法查看、获取和显示错误。
【解决方案2】:

这是一个在 laravel 中处理错误的好例子

message.blade.php

@if($errors->any())
    <div class="alert alert-danger">
        <p><strong>Opps Something went wrong</strong></p>
        <ul>
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
        </ul>
    </div>
@endif

@if(session('success'))
    <div class="alert alert-success">{{session('success')}}</div>
@endif

@if(session('error'))
    <div class="alert alert-danger">{{session('error')}}</div>
@endif

例如,在您的控制器更新方法中,

public function update(Request $request, $id)
    {
        $this->validate($request,[
            'title'=>'required',
            'body'=>'required'
        ]);
       //the above validation is important to get the errors caught 
        $post= Post::find($id);
        $post->title = $request->input('title');
        $post->body = $request->input('body');

        $post->save();

        return redirect('/posts')->with('success','Updated successfully');
    }

如果您有一个布局文件作为 layout.blade.php 注意:在布局文件中显示错误有利于将消息用于所有目的。

...
<div class="container">
    @include('message')
    @yield('content')
</div>
...

【讨论】:

【解决方案3】:

好的,我发现了错误。我没有其他语言可以上传。 在文件 app/config.php 中,将 'locale' => 'pl' 替换为 'en'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2018-08-26
    • 2016-10-13
    • 2018-04-19
    相关资源
    最近更新 更多