Yii2 отображать несколько изображений в строке gridview
Я хочу отображать несколько изображений в виде сетки в одной строке. Например: у меня есть таблица A, таблица B и таблица C.
Таблица A имеет my_id.
В таблице B my_id - это внешний ключ. Наряду с my_id у него есть c_id.
Таблица C имеет c_id, который указан в таблице B.
Таблица C также имеет путь к файлу для отображения изображений.
вТаблица А я имеюmy_id
следующим образом: 1, 2, 3, 4, 5, 6.
ВТаблица Б я имеюmy_id
следующее. 1, 1, 1, 2, 3, 3.
ВТаблица Б у меня тоже естьc_id
следующее. 1, 2, 3, 4, 5, 6.
В таблице C мои c_id: 1, 2, 3, 4, 5, 6. и эти идентификаторы имеют путь к файлу, связанный с каждым из них. Это разные образы.
Теперь мой gridview должен отображать 3 разных изображения дляmy_id
из-за ограничений внешнего ключа. но он отображает только 1 изображение.
Мой код ниже:
В моей модели
public function getPictogramsID()
{
$pictogramsID = SdsrefGhsPictograms::find()->where(['sdsref_id' => $this->sdsref_id])->all();
foreach ($pictogramsID as $picID){
return $picID->pictogram_id;
}
}
public function getPictogramPath()
{
$pictogramsID = GhsPictogram::find()->where(['pictogram_id' => $this->getPictogramsID()])->all();
foreach ($pictogramsID as $picID){
$pic = $picID->pictogram_filepath;
}
return $pic;
}
public function getPictogramUrl()
{
//var_dump($this->getPictogramPath()); exit();
return \Yii::$app->request->BaseUrl.'/web'.$this->getPictogramPath() ;
}
моя индексная сетка просмотр кода изображения
[
'label' => 'Hazards',
'format' => 'raw',
'value' => function ($data) {
return Html::img($data->getPictogramUrl(), ['alt'=>'myImage','width'=>'20','height'=>'30']);
},
],
Я также пытаюсь добавить подсказку начальной загрузки к этому .. подсказка отображается успешно, но я думаю, что зацикливание выполнено неправильно, поэтому оно повторяет мои изображения.
вот мой обновленный код gridview.
[
'label' => 'Hazards',
'format' => 'raw',
'value' => function ($data) {
$images = '';
// append all images
foreach($data->getPictogramName() as $name)
foreach ($data->getPictogramUrl() as $url)
$images = $images.Html::img($url,['alt'=>'','width'=>'30','height'=>'30', 'data-toggle'=>'tooltip','data-placement'=>'left','title' => $name ,'style'=>'cursor:default;']);
return $images;
}
],