2015-11-06 3 views
0

В моем объекте Пользователь, у меня есть дополнительная фотография профиля. Я хотел бы показать его, и если оно равно нулю, установить ПОС к стандартному avatar.pnggetPictureAttribute в Laravel 5.1 Model

Так я думал, что хорошее место было в модели с:

public function getPictureAttribute($picture){ 
    return is_null($picture) ? 'avatar.png' : $picture; 
} 

На мой взгляд : код я хочу избежать

@if (!is_null($user->picture)) 
    <img src="{{ $user->picture) }}" /> 
@else 
    <img src="{{ "avatar.png") }}" /> 
@endif 

код, который я хочу, но это не потому, что он не возвращает avatar.png но нуль

<img src="{{ $user->picture) }}" /> 

Картинка null, я не знаю почему?

Никто не может объяснить ???

+0

попробовать с функцией setPictureAttribute –

ответ

1

Вы вводите в заблуждение аксессоры с помощью мутаторов. При определении аксессора (атрибут геттер), вы должны вернуть измененные данные, как это:

public function getPictureAttribute($picture) 
{ 
    return is_null($picture) ? 'avatar.png' : $picture; 
} 

При определении мутатора (атрибут сеттер), что, когда вы делаете то, что в вашем примере, за исключением вы должны установить его (не получить):

public function setPictureAttribute($picture) 
{ 
    if (is_null($picture)) 
    { 
     $this->attributes['picture'] = "avatar.png"; 
    } 
    else 
    { 
     $this->attributes['picture'] = $picture; 
    } 
} 

Источник: http://laravel.com/docs/5.1/eloquent-mutators#accessors-and-mutators

+0

Tx, я получаю это. Дело в том, что я хотел сделать это, чтобы не делать: (! $ User-> картинка = NULL). @ если @ ENDIF в моих взглядах Но если я использую getter, он никогда не дает мне аватара –

+0

Но вы неправильно определили геттер в своем примере. Вы попробовали мой пример? –

+0

да, я его исправил! Я использую get и возвращаю что-то –

Смежные вопросы