Intereting Posts
ghostscript не работает в php Добавление Node.js (для уведомлений в режиме реального времени) к существующему PHP-приложению проблема с где в codeIgniter getRealPath возвращает false (Image Intervention и Laravel 5.1) Как заставить его запустить команду `exec ()` в PHP для редактирования некоторого файла в Mac OS X? Сравнение паролей с crypt () в PHP Почему мне нужно вызывать «exit» после перенаправления через заголовок («Location ..») в PHP? Неустранимая ошибка: нельзя повторно назначить автоматически-глобальную переменную _POST Множественная загрузка изображения с PHP, сохраняющая только один путь к базе данных MySQL Ошибка Symfony CreateProcess Удалять файлы с одинаковым префиксом mod_rewrite: многоуровневый URL-адрес с использованием параметра запроса Передайте значение в filter_input (), используя переменную Создайте мою собственную (не-базу данных) функцию fetch_object как импортировать очень большой запрос по phpmyadmin?

Изображение в gridview в yii2

Как поместить изображение в GridView в yii2? У меня есть следующий код. Но это не отображает изображение, поскольку оно не дает никакого 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'], ], ]); ?> 

Попробуйте,

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

И в вашей модели,

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

Не знаю, как это правильно или нет. Но это работает для меня.

Использовать это:

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

Yii 2 имеет встроенный помощник для создания URL-адресов. Вы также можете вывести URL-адрес изображения по пути (путем передачи второй $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); } 

В views-> image-> 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

Раньше я использовал «сырой» формат для этого типа работы.

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

если изображение существует, тогда отображается изображение, иначе оно пустое.

Вы можете попробовать это:

  <?= 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']); }, ], ], ]); ?> 

Вы также можете использовать:

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

' @web ' – это предопределенные псевдонимы путей .

' urlManager-> CreateUrl () ' делает нечто большее, чем разрешение псевдонимов.

Просто вы можете просто объявить его в своем индексном файле, как показано ниже.

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

Вам нужно будет получить экземпляр изображения из вашей модели. Если требуется, пожалуйста, прокомментируйте, верните это.