在Array Bag中设置自定义错误消息

时间:2015-09-09 06:40:36

标签: php blade laravel-5.1

我想重定向以查看是否未达到某个条件。检查代码:

if($request->get('files') == 'yes' && $request->file('file_name') == null){
                return Redirect::to('brief/'.$id."/edit")
                ->withErrors('errors',"Mention file")
                ->withInput();
            }

它将数组打印为:

Illuminate\Support\ViewErrorBag {#239
  #bags: array:1 [
    "Mention file" => Illuminate\Support\MessageBag {#240
      #messages: array:1 [
        0 => array:1 [
          0 => "errors"
        ]
      ]
      #format: ":message"
    }
  ]

在观看结束时我正在做:

@if (count($errors) > 0)
                <div style="margin-top: 10%;" class="alert alert-danger">
                    <ul>
                        @foreach ($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                </div>
            @endif

不打印消息提及文件

2 个答案:

答案 0 :(得分:1)

您使用->withErrors传递字符串,或使用->with传递一个包含键“错误”的数组:

if($request->get('files') == 'yes' && $request->file('file_name') == null){
            return Redirect::to('brief/'.$id."/edit")
            ->withErrors("Mention file")
            ->withInput();
        }

if($request->get('files') == 'yes' && $request->file('file_name') == null){
            return Redirect::to('brief/'.$id."/edit")
            ->with(["errors" => "Mention file"])
            ->withInput();
        }

答案 1 :(得分:0)

好的,我发现了这个问题。

来自文件:

  

您可以使用withErrors方法将错误消息刷新到   会话。使用此方法时,$ errors变量将   重定向后自动与您的视图共享,

所以->withErrors('errors',"Mention file")实际上是将$errors转换为一个搞乱的字符串。简单地->withErrors("Mention file")只是在ErrorBag中添加了消息。所以正确的代码应该是:

if($request->get('files') == 'yes' && $request->file('file_name') == null){
                return Redirect::to('brief/'.$id."/edit")
                ->withErrors("Mention file")
                ->withInput();
            }