8

yii2 の GridView に画像を配置する方法は?次のコードがあります。ただし、画像のURLを指定していないため、画像は表示されません。画像のURLをどこに置く?

 <?php echo GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'c_id',
        'name:ntext',
        'description:ntext',
        array(
                'format' => 'image',
               'attribute'=>'logo',

),

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>
4

9 に答える 9

19

のようにしてみてください。

 array(
'format' => 'image',
'value'=>function($data) { return $data->imageurl; },

   ),

そしてあなたのモデルでは、

public function getImageurl()
{
return \Yii::$app->request->BaseUrl.'/<path to image>/'.$this->logo;
}

これが正しい方法かどうかはわかりませんが、これは私にとってはうまくいきます。

于 2014-03-12T09:38:27.940 に答える
13

これを使って:

   [
        'attribute' => 'image',
        'format' => 'html',    
        'value' => function ($data) {
            return Html::img(Yii::getAlias('@web').'/images/'. $data['image'],
                ['width' => '70px']);
        },
    ],
于 2015-06-25T09:44:41.470 に答える
2

Yii 2 には、URL を作成するためのヘルパーが組み込まれています。パスで画像への URL をブルブルすることもできます (2 番目のパラメーターを渡すことにより$scheme)。

だから私はこれを使用することをお勧めします:

グリッドビュー:

use yii\helpers\Url;

[
    'format' => 'image',
    'value' => function ($model) {
        return $model->getImageUrl(); 
    },
],

モデル:

public function getImageUrl()
{
    return Url::to('@web/path/to/logo/' . $this->logo, true);
}
于 2014-12-09T08:51:35.343 に答える
1

このタイプの作業には、以前は「生」形式を使用していました。

[
    "attribute": "image",
    "format": "raw",
    "value": function($model){
        return ($model->image) ? Html::img("/path-to-img-location" . $model->image) : false;
    }
]

画像が存在する場合、画像が表示されます。それ以外の場合は空白です。

于 2017-01-10T17:14:00.347 に答える
0

以下も使用できます。

public function getImageurl()
{
  return \Yii::$app->urlManager->createUrl('@web/path/to/logo/'.$this->logo);
}

@web」は事前定義されたパス エイリアスです。

' urlManager->CreateUrl() 'は、エイリアスを解決する以上のことを行います。

于 2014-12-09T07:29:53.603 に答える
0
<?php echo GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'c_id',
        'name:ntext',
        'description:ntext',
        'logo:image',

        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>
于 2020-05-30T19:52:30.900 に答える
0

以下のようにインデックスファイルで宣言するだけで簡単です。

[
            'label' => Your Label Here',  
            'format' => 'raw',   
            'value' => function ($data) {
                 $images = '';

                $images = $images.Html::img(\Yii::$app->request->BaseUrl.'/your-path-here/'.$date->getImagefilename(),['alt'=>'','width'=>'30','height'=>'30', 'data-toggle'=>'tooltip','data-placement'=>'left','title' => $name->pictogram_comment ,'style'=>'cursor:default;']);
                return ($images);

            }
            ],

モデルからイメージ インスタンスを取得する必要があります。必要な例があれば、コメントしてください。

于 2016-07-29T13:44:30.013 に答える