2012-12-07 27 views
0

我正在使用yii cdetail小部件來查看,但..我想知道如果圖像不存在,如何找到一種方式。如何不顯示圖像,如果它不存在於小部件

,我發現了錯誤:試圖讓非對象的屬性

<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model, 
'attributes'=>array(
    'id', 
      'name', 
    'keywords', 
    array(
    'label'=>'Image', 
    'type'=>'raw', 
    'value'=>$fileModel->name ? CHtml::image(Yii::app()->request->baseUrl.'/uploads/'.$model->logo_file_id.'/'.$fileModel->file_name.$fileModel->extension,"image_url") : null, 
     ), 

    'contact_name', 
    'description', 
    'status', 
    'created', 

), 
)); ?> 

誰能告訴我什麼是錯在這裏嗎?

+0

什麼是'$ fileModel'? – adamors

+0

假設'$ model'總是被設置,'$ fileModel'爲'null'會導致異常。您必須添加檢查是否設置了$ fileModel(或者即使設置了它,檢查文件是否存在於磁盤上)。 – Hnatt

回答

0

請試試這個..

"value"=>'($data->picture !=="") ? CHtml::image(Yii::app()->request->baseurl."/upload/technician/".$data->picture,"",array(\'width\'=>100, \'height\'=>50)) : ""', 

我希望它會幫助你...

1

在這個模型中,你可以有一個getter方法返回的圖像或默認的,如果它不存在:

public function getImage() { 
    $url = Yii::app()->request->baseUrl.'/uploads/'.$this->logo_file_id.'/'.$fileModel->file_name.$fileModel->extension; 
    if(file_exists($url)){ 
     return $url 
    } 
    //return the default image for example 
} 

然後在你看來你只是做

'value'=> CHtml::image($model->Image,"image_url"), 
//Note that i'm calling "Image" and not getImage() 

當然這個代碼必須改進,因爲$ fileModel不會在方法getImage中定義,但我不知道它的作用是什麼!

+0

值得一提的是,如果'$ this-> logo_file_id'或'$ fileModel-> file_name'沒有設置(即沒有圖像),getter必須返回一個「no_image.jpg」文件的路徑。 – Hnatt

相關問題