2017-07-19 13 views
-1

残念ながら、I have already read this questionという問題があります。私に与えられた答えはうまくいかない。Laravelでファイルが存在しません5.4

画像が見つからない場合は、プレースホルダ画像が印刷されます。あなたが見ることができるように

Models: 
public function cover() 
     { 
     if(file_exists('/upload/cover/'.$this->immagine)) { 
      return url('/upload/cover/'.$this->immagine); 
     } else { 
      return url('/upload/cover/no-cover.png'); 
     } 
     } 

Blade: 
      <img src="{!! $info_giochi->cover() !!}" 
      <img src="{{ url('upload/cover/'.$info_giochi->immagine) }}"> 

、私は二回、SRCを入れブレードで、これは私が参照してる画像が本当にそこに実際には、存在することを確認します。

私の最初のimg srcでは、画像が表示されず、「no-cover.png」が表示されるのはなぜですか?で固定

+0

は、 ')(あなたは' public_pathを使用していないのはなぜか? –

+0

ありがとう、私の間違いを見つけました... – LegoLiam

+1

file_existsはファイルシステムを使用するので、 '/ upload'という文字通り、Webディレクトリではなくサーバーのルートパスにあるアップロードディレクトリを意味します。 – Devon

答えて

1

あなたはそれがより多くの「Laravelウェイ」になります。この目的のために「ストレージ」のファサードを使用する必要があります。

use \Illuminate\Support\Facades\Storage; 

Storage::disk('public')->exists('/upload/cover/' . $this->immagine); 

"Storage" documentation.

0

public function cover() 
    { 
    if(file_exists(public_path('/upload/cover/'.$this->immagine))) { 
     return '/upload/cover/'.$this->immagine; 
    } else { 
     return '/upload/cover/no-cover.png'; 
    } 
    } 
関連する問題