【问题标题】:Laravel $errors in blade misteryLaravel $刀片之谜中的错误
【发布时间】:2019-02-03 23:09:47
【问题描述】:

有人能解释一下为什么有时我必须使用$errors->all() 而有时不用吗? 努力寻找错误数组和对象 $errors 的唯一解决方案。

// View 1
@if (count($errors) > 0)
    @foreach($errors as $error)
        {{ $error }}<br>
    @endforeach
@endif

// View 2 that sometimes it crashes with:
// "Call to a member function all() on array"
@if (count($errors) > 0)
    @foreach($errors->all() as $error)
        {{ $error }}<br>
    @endforeach
@endif

【问题讨论】:

  • 您有时会手动将错误传递给您的视图吗?例如:return view('...')-&gt;withErrors(['Your errors']);
  • 您必须在视图响应中使用with('errors', [...]) 手动传递错误,或者通过session([ 'errors' =&gt; [...]) 在会话中手动设置错误,您需要确保始终在视图响应中使用withErrors([..])或重定向响应以正确设置错误消息。
  • 你使用的是什么版本的 Laravel?另外,如果控制器方法与您处理验证的方式有什么不同?
  • 5.6 @RossWilson 我在控制器上什么也没做。

标签: php arrays laravel object laravel-blade


【解决方案1】:

我真的不怎么做 laravel,但我认为你总是可以做这样的事情:

  @if (count($errors) > 0)
    @if(is_array($errors))
      @foreach($errors as $error)
        // code
      @endforeach
    @elseif(is_object($errors))
      @foreach($errors->all() as $error)
        //code
      @endforeach
    @endif
  @endif

【讨论】:

    【解决方案2】:

    $errors-&gt;all() 如果您通过 Validator 或 Request 类验证数据,则使用。请参阅文档的 part。 Laravel 将 $errors 变量共享为 MessageBag 类。

    $errors as array 在控制器中使用 if 会返回如下内容:

    return back()->withErrors([
        'field1' => 'Error in the field 1'
    ]);
    

    在这种情况下,Laravel 将 $errors 变量共享为 array

    【讨论】:

    • 我正在使用请求,没有任何重定向。
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 2015-10-24
    • 2017-10-11
    • 2018-04-08
    • 2014-11-08
    • 1970-01-01
    • 2019-07-29
    • 2017-07-15
    相关资源
    最近更新 更多