Laravel - 显示错误出错

时间:2016-12-08 18:22:31

标签: php laravel validation laravel-5 laravel-5.3

我有一个包含文件上传表单的简单页面。 我在控制器中验证它并在出现问题时在视图中返回错误。不幸的是,即使我没有提交表单,也会显示有错误的警报(没有错误时为空警报)。有人可以告诉我如何以更好的方式做到这一点吗?

表单+错误显示:

<form enctype="multipart/form-data" method='POST' action='/add_image'>
    {{ csrf_field() }}
    <p>Wybierz zdjęcie do dodania:</p>
    <input type="file" onchange='loadFile(event)' name='fileUpload' id='fileUploadInput'> <br> <br>
    <img id="uploadPreview"> <br> <br>
    <input type='submit' name='submit' id='fileUploadSubmit'>
</form>


    @if($errors)

       <script>alert('{{$errors->first()}}');</script>

    @endif

验证

 if($request->hasFile('fileUpload')){
            $image = $request->file('fileUpload');

            $validator = Validator::make($request->all(), [
               'fileUpload' => 'required|image',
            ])->validate();

        }

$ errors var_dump输出没有错误:

object(Illuminate\Support\ViewErrorBag)#147 (1) { ["bags":protected]=> array(0) { } }

我只是希望此警报显示何时出现任何错误......

我尝试了什么,如果(isset($ errors))和!空但是它没有帮助

1 个答案:

答案 0 :(得分:2)

您正在检查的$errors对象未评估为FALSE,但TRUE因为它是一个对象(ViewErrorBag)。这会导致if检查通过,但仍会在first()来电时爆炸 您要做的是确保错误包中有任何错误 请尝试以下方法:

@if($errors->any())
  <script>alert('{{$errors->first()}}');</script>
@endif