【问题标题】:Laravel - message bag not visibleLaravel - 消息包不可见
【发布时间】:2021-07-19 08:27:37
【问题描述】:

我正在使用 Laravel 7.0。

在我的 app/Exceptions/Handler.php 方法中“渲染”。我需要为“PostTooLargeException”创建条件。

请求是否来自 ajax 的响应是不同的。

问题是如果请求不是 ajax。我正在尝试返回一些错误消息,但是我想在函数“with()”或“withErrors()”中返回的任何内容在刀片视图中都不存在。

出了什么问题,为什么会这样?

我的代码:

if ($exception instanceof PostTooLargeException) {

    if ($request->ajax()) {
        return response(['message' => "The file you are trying to send is too large "], 422);
    } {
        $errors = new MessageBag();
        $errors->add('error', 'test');
        return Redirect::back()->withErrors($errors);
    }
}   

刀片:

@if($errors->any())
     <div class="alert alert-danger">
          <ul class="list-unstyled">
                 @foreach ($errors->all() as $error)
                       <li>{{ $error }}</li>
                 @endforeach
          </ul>
      </div>
 @endif

【问题讨论】:

    标签: laravel


    【解决方案1】:

    没有MessageBag,您可以通过将数组传递给withErrors来实现这一点

     return redirect()->back()->withErrors(['error' => "test"]);
    

    【讨论】:

    • 我也测试过这种方式。而且没有成功。
    • @Klick 此代码有任何错误?我已经使用您提到的刀片代码测试了相同的代码,因此它在 laravel 8 中运行良好并且能够看到错误消息。尝试清除缓存
    • 我做到了。我不知道有什么问题。我不是从头开始编写这个项目的。所以也许预览开发者会改变一些设置?可能吗?如果是,我应该在哪里寻找它?
    • @Klick 好的。很难猜测,但尝试 dd(($errors->all()) 并查看并查看您得到的结果
    • 我也这样做了。而且它总是空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多