Yii2 zeigt mehrere Bilder in der Rasteransicht an
Ich möchte mehrere Bilder in einer einzelnen Zeile mit Rasteransichten anzeigen. Zum Beispiel: Ich habe Tabelle A, Tabelle B und Tabelle C.
Tabelle A hat meine_ID.
In Tabelle B my_id ist der Fremdschlüssel. Zusammen mit my_id hat es c_id.
Tabelle C hat c_id, auf die in Tabelle B verwiesen wird.
Tabelle C verfügt auch über einen Dateipfad zum Anzeigen von Bildern.
imTabelle A ich habemy_id
wie folgt: 1, 2, 3, 4, 5, 6.
ImTabelle B ich habemy_id
wie folgt. 1, 1, 1, 2, 3, 3.
ImTabelle B ich habe auchc_id
wie folgt. 1, 2, 3, 4, 5, 6.
In Tabelle C sind meine c_ids: 1, 2, 3, 4, 5, 6. Diesen IDs sind Dateipfade zugeordnet. Sie sind verschiedene Bilder.
Nun sollte meine Gridview 3 verschiedene Bilder für @ anzeigmy_id
wegen der Fremdschlüsselbeschränkungen. Es wird jedoch nur 1 Bild angezeigt.
Mein Code ist unten:
In meinem Modell
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() ;
}
meine Indexdatei Gitteransicht Bildcode
[
'label' => 'Hazards',
'format' => 'raw',
'value' => function ($data) {
return Html::img($data->getPictogramUrl(), ['alt'=>'myImage','width'=>'20','height'=>'30']);
},
],
Ich versuche auch, diesem Tooltip einen Bootstrap-Tooltip hinzuzufügen. Der Tooltip wird erfolgreich angezeigt, aber ich denke, dass die Schleifen nicht korrekt ausgeführt werden und meine Bilder wiederholt werden.
hier ist mein aktualisierter Gridview-Code.
[
'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;
}
],