web-dev-qa-db-ja.com

yii2のグリッドビューの画像

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'],
    ],
]); ?>
9
Dency G B

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

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

   ),

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

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

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

20
user3401689

これを使って:

   [
        'attribute' => 'image',
        'format' => 'html',    
        'value' => function ($data) {
            return Html::img(Yii::getAlias('@web').'/images/'. $data['image'],
                ['width' => '70px']);
        },
    ],
11
Insane Skull

あなたはこれを試すことができます:

 <?= GridView::widget
                ([
                    'dataProvider' => $dataProvider,
                     'filterModel' => $searchdata,
        'columns' => [
                      [
                         'attribute' => 'logo',
                         'format' => 'html',
                         'label' => 'Image',
                         'value' => function ($data) {
                                    return Html::img('/advanced/hello/frontend/web/image/' . $data['logo'],
                                    ['width' => '80px',
                                     'height' => '80px']);
                                   },
                     ],
                    ],
                 ]);
        ?>
2
Vishal Kumar

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

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

GridView:

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);
}
2
arogachev

私はこのタイプの作業に「生」フォーマットを使用していました。

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

画像が存在する場合は画像が表示され、存在しない場合は空白になります。

1
msucil

ビュー->画像-> index.php

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,

        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
             [
             'attribute'=>'image_path',
            'label'=>'Image',
            'format'=>'html',
            'content' => function($data){
                $url = $data->getParentName();
                return Html::img($url, ['alt'=>'yii','width'=>'250','height'=>'100']);
                        }
            ],
            'caption1',
            'caption2',
            'status',
            ['class' => 'yii\grid\ActionColumn'],
        ],
        'tableOptions' =>['class' => 'table table-striped table-bordered'],

    ]); ?>

モデル内->画像

 public function getParent()
    {
        return $this->hasOne(Image::className(), ['image_id' => 'image_id']);
    }
    public function getParentName()
    {
        $model=$this->parent;
        return $model?$model->image_path:'';
    }

テーブルの属性は、image_id、image_path、caption1、caption2、statusです。

1
Preetha R

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

[
            '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);

            }
            ],

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

0
Mohan Prasad

次のものも使用できます。

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

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

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

0
Gonzalo