2016-12-08 6 views
0

ファイルのアップロード用のフォームを持つ簡単なページがあります。 私はコントローラーでそれを検証し、何か問題が生じた場合にビュー内のエラーを返す。不幸にも、フォームを送信していなくても、エラーのあるアラートは常に表示されます(エラーがない場合は空のアラート)。誰かがもっと良い方法でこれを行う方法を教えてもらえますか?Laravel - 表示エラーが間違っています

フォーム+エラーが表示さ:

<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(); 

     } 

$エラーのvar_dumpの出力をエラーなし:

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

を私はちょうどこのアラートは、何らかのエラーがあるときに表示したいですそこに...

私が試した他に何

だった場合(ISSET($エラー))と!空が、それは

答えて

2

あなたはそれがオブジェクト(ViewErrorBag)が原因FALSEが、TRUEに評価されないチェックされ$errorsオブジェクトを支援イマイチ。これにより、ifのチェックは合格しますが、まだfirst()コールで爆発します。
あなたがしなければならないことは、エラーバッグにエラーがあることを確認することです。
次を試してください:

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

ありがとうございました! – divHelper11

+2

これは正しいですが、それは 'any()'の目的であるので '$ errors-> any()'が良いと思います。 – mopo922

+0

@ mopo922ありがとう! – divHelper11

関連する問題