2015-02-04 5 views
5

angezeigt werden Ich habe Bilder gespeichert in/web/uploads/PROJECT in Yii2. Wie zeige ich sie auf der Seite an? Unten sind meine Codes, aber das gebrochene Linkbild.Yii2 wie Bilder im Web-Ordner

Controller:

$img = Yii::$app->request->baseUrl.'/web/uploads/PROJECT/'; 
$image = Html::img($img.$img_obj['AVATAR'],["width"=>"600px"]); 

Ausblick:

echo $data; 

Muss ich irgendwelche Rechte zu setzen haben, um es anzuzeigen? Ein Rechtsklick und Startbild in neuem Tab zeigt die URL „/web/uploads/PROJECT/3fioobapJ5vRk_wdCEzDJbQWyO66inWO.jpg“, die korrekt, aber Seite zeigt „Not Found (# 404)“

jemand freundlich Kann zu sein scheint raten? Vielen Dank!

+0

Sind Sie mit Apache? Zeigen Sie Ihre '.htaccess' an. – arogachev

+1

ist nicht der öffentliche Ordner in yii Web? Wenn ja, sollte es nicht '$ img = 'uploads/PROJECT /';' sein? –

+0

Ja, wahrscheinlich ist es der Grund, übersehen es. – arogachev

Antwort

9

Seltsamerweise zeigt die Verwendung der folgenden Codes die Bilder korrekt an.

$img = Url::to('@web/uploads/PROJECT/').$img_obj['AVATAR'];     
$image = '<img src="'.$img.'" width="600" />'; 


<img src="<?= Yii::$app->request->baseUrl . '/backend/web/uploads/' . $model->profile_photo ?>" class=" img-responsive" > 
<?php echo Html::img('@web/img/icon.png', ['class' => 'pull-left img-responsive']); ?> 
2

diesen Code in Ihre Grid-Ansicht hinzufügen:

 [ 
      'attribute'=>'photo', 
      'value' => Html::a(Html::img(Yii::getAlias('@web').'/image/'.$st_data->photo, ['alt'=>'some', 'class'=>'thing', 'height'=>'100px', 'width'=>'100px']), ['site/zoom']), 
      'format' => ['raw'], 
     ], 
+0

Für den Weg nur das hat mir geholfen: Yii :: getAlias ​​('@ web'). '/ Image/img.gif' Danke – TomoMiha

4

Die statischen Bilder sollten in web/any_folder_name

für den Zugriff in YII 2 platziert werden:

<?= Html::img('@web/any_folder_name/bg1.jpg', ['alt'=>'some', 'class'=>'thing']);?> 
+0

Das funktioniert für mich. Danke :) Ich habe versucht, den @ @ Backend-Alias ​​auf "web/images/sample.png" zu setzen, aber ich bekomme immer ein kaputtes Bild. Ich frage mich nur, warum '@ web' richtiger ist als' @ backend'? :) – Chisskarzz