Ich möchte mehrere Bilder in einer Rasteransicht einzelne Zeile anzeigen. Zum Beispiel: Ich habe Tabelle A, Tabelle B und Tabelle C.Yii2 mehrere Bilder in der Gridview-Zeile anzeigen
Tabelle A hat my_id.
In Tabelle B ist my_id der Fremdschlüssel. Zusammen mit my_id hat es c_id.
Tabelle C hat, die in Bezug C_Id in Tabelle B ist
Tabelle C hat auch ein Filepath Bilder anzuzeigen.
in Tabelle A i my_id
haben wie folgt: 1, 2, 3, 4, 5, 6.
In Tabelle B i haben my_id
wie folgt. 1, 1, 1, 2, 3, 3.
In Tabelle B i folgt auch c_id
haben, wie. 1, 2, 3, 4, 5, 6.
In Tabelle C sind meine C_Id der: 1, 2, 3, 4, 5, 6 und diese IDs haben Filepath mit jedem von ihnen verbunden ist. Sie sind unterschiedliche Bilder.
Jetzt sollte mein Gridview 3 verschiedene Bilder für my_id
wegen der Fremdschlüsseleinschränkungen anzeigen. aber es zeigt nur 1 Bild an.
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 Rasteransicht Bildcode
[
'label' => 'Hazards',
'format' => 'raw',
'value' => function ($data) {
return Html::img($data->getPictogramUrl(), ['alt'=>'myImage','width'=>'20','height'=>'30']);
},
],
ich auch ein Bootstrap-Tool hinzufügen versuchen tip to this .. Tooltip wird erfolgreich angezeigt, aber ich denke, das Schleifen ist nicht in einem corre getan So, so wiederhole ich meine Bilder.
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;
}
],
ich sehe, gibt es keinen Unterschied .. Es ist nur 1 Bild zurückkehrt? –
Alle drei Funktionen im Modell aktualisiert? –
Überprüfen Sie das Ergebnis von 'getPictogramsID()', gibt es drei Werte zurück? –