2015-11-06 40 views
0

在我的對象User中,我有一個可選的配置文件圖片。 我想顯示它,如果它爲空,則PIC設置爲非標準avatar.pngLaravel 5.1中的getPictureAttribute模型

因此,我認爲好的地方是在模型中,有:

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) }}" /> 

圖片爲空,我不知道爲什麼?

有人解釋?

+0

嘗試與setPictureAttribute功能 –

回答

1

您正在使用增變器來混淆訪問器。當你定義一個訪問(該屬性的getter),你必須回到這樣修改後的數據:

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,我明白了。事情是我想要做的是,爲了避免這樣做的:(!$用戶>圖片= NULL)。 @如果 @ ENDIF 在我的意見,但如果我用getter,它永遠不會給我頭像 –

+0

但你在你的例子中錯誤地定義了getter。你試過我的例子嗎? –

+0

是的,我改正了!我使用get,並返回 –