2015-10-16 7 views
1

Мой пользователь загружает изображение профиля, которое хранится в памяти/profile_picture/user1.png. Для этого я использую классы файловой системы и хранилища.Laravel Image По умолчанию

Чтобы получить изображение Я использую {!! Html::image(route('profile.thumbnail', $user->profilepic_filename), "Your Picture Here", ['class'=>'img-responsive']) !!}

В моем контроллере у меня есть

public function thumbnail($filename) 
{ 
    $user = User::where('profilepicture_filename', '=', $filename)->firstOrFail(); 
    $file = Storage::disk('local_profile')->get($user->profilepicture_filename); 


    //$file = URL::asset('/images/default_profilepicture.png'); //doesn't work 

    return (new Response($file, 200))->header('Content-Type', $mime); 

} 

}

Я хочу, чтобы получить изображение по умолчанию, если изображение профиля не найден или не загружен. Как я могу это сделать?

Спасибо,

K

ответ

0

Для чего-то вроде этого, я бы просто переопределить аксессуар (aka getter) на вашей модели User.

http://laravel.com/docs/master/eloquent-mutators#accessors-and-mutators

Любой столбец базы данных, такие как profilepicture_filename можно манипулировать после того, как он получен с использованием get___Attribute метода, где ___ это имя столбца в Camel Case

class User 
{ 
    /** 
    * @return string 
    */ 
    public function getProfilepictureFilenameAttribute() 
    { 
     if (! $this->attributes['profilepicture_filename'])) { 
      return '/images/default_profilepicture.png'; 
     } 

     return $this->attributes['profilepicture_filename']; 
    } 
} 

Теперь вы просто должны сделать

<img src="{{ asset($user->profilepicture_filename) }}"> 

И будет отображаться либо их изображение, либо значение по умолчанию, если у них его нет. Вам больше не нужен маршрут эскизов.

1

вы могли бы просто сделать в вас посмотреть:

@if(!file_exist($file->name)) <img src="/path/to/default.png"> @else <img src="{{$file->name}}"> @endif 

или в контроллере:

if(!$file) 
    { 
     $file = '.../default/blah.png'; 
    } 
Смежные вопросы