Yii2 exibe várias imagens na linha gridview
Quero exibir várias imagens em uma única linha de visualizações de grade. Por exemplo: eu tenho a tabela A, tabela B e tabela C.
A tabela A possui meu_id.
Na tabela B, my_id é a chave estrangeira. Junto com my_id, ele tem c_id.
A tabela C possui c_id, que está em referência na tabela B.
A tabela C também possui um caminho de arquivo para exibir imagens.
noQuadro A eu tenhomy_id
da seguinte forma: 1, 2, 3, 4, 5, 6.
NoQuadro B eu tenhomy_id
do seguinte modo. 1, 1, 1, 2, 3, 3.
NoQuadro B eu também tenhoc_id
do seguinte modo. 1, 2, 3, 4, 5, 6.
Na tabela C, meus c_id são: 1, 2, 3, 4, 5, 6. e esses IDs têm um caminho de arquivo associado a cada um deles. São imagens diferentes.
Agora meu gridview deve exibir 3 imagens diferentes paramy_id
por causa das restrições de chave estrangeira. mas exibe apenas 1 imagem.
Meu código está abaixo:
No meu modelo
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() ;
}
minha grade de arquivos de índice visualizar o código da imagem
[
'label' => 'Hazards',
'format' => 'raw',
'value' => function ($data) {
return Html::img($data->getPictogramUrl(), ['alt'=>'myImage','width'=>'20','height'=>'30']);
},
],
Também estou tentando adicionar uma dica de ferramenta de autoinicialização a esta .. dica de ferramenta está sendo exibida com êxito, mas acho que o loop não é feito da maneira correta e, portanto, está repetindo minhas imagens.
Aqui está o meu código atualizado do 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;
}
],