Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image Yii2在gridview行中显示多个图像_Image_Gridview_Yii2_Yii2 Model - Fatal编程技术网

Image Yii2在gridview行中显示多个图像

Image Yii2在gridview行中显示多个图像,image,gridview,yii2,yii2-model,Image,Gridview,Yii2,Yii2 Model,我想在一行GridView中显示多个图像。例如:我有表A、表B和表C 表A有我的身份证 在表B中,my_id是外键。除了我的身份证,它还有身份证 表C中的C_id在表B中引用 表C还有一个显示图像的文件路径 在表A中,我有如下我的_id: 一,二,三,四,五,六 在表B中,我有如下i_id。 一,一,一,二,三,三 在表B中,我还有如下c_id。 一,二,三,四,五,六 在表C中,我的C_id是: 1, 2, 3, 4, 5, 6. 这些id都有与之关联的文件路径。它们是不同的图像 现在,由于外

我想在一行GridView中显示多个图像。例如:我有表A、表B和表C

表A有我的身份证

在表B中,my_id是外键。除了我的身份证,它还有身份证

表C中的C_id在表B中引用

表C还有一个显示图像的文件路径

在表A中,我有如下
我的_id
: 一,二,三,四,五,六

在表B中,我有如下
i_id
。 一,一,一,二,三,三

在表B中,我还有如下
c_id
。 一,二,三,四,五,六

在表C中,我的C_id是: 1, 2, 3, 4, 5, 6. 这些id都有与之关联的文件路径。它们是不同的图像

现在,由于外键约束,我的gridview应该为
my_id
显示3个不同的图像。但它只显示一个图像

我的代码如下:

在我的车型中

 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;

        }
        ],

模型和网格视图中几乎没有逻辑错误。在所有这些领域中,您处理的是一项而不是三项

在您的模型中

 public function getPictogramsID()
 {   
    $ids = [];
    $pictogramsID = SdsrefGhsPictograms::find()->where(['sdsref_id' => $this->sdsref_id])->all();
    foreach ($pictogramsID as $picID){
       $ids[] =  $picID->pictogram_id;
    }

    return $ids;// returning all three ids
 }



 public function getPictogramPath()
 {

    $pic = [];
    $pictogramsID = GhsPictogram::find()->where(['pictogram_id' => $this->getPictogramsID()])->all();
    foreach ($pictogramsID as $picID){
        $pic[] = $picID->pictogram_filepath;
    }
    return $pic;

}



public function getPictogramUrl()
{
  $url = [];
  foreach($this->getPictogramPath() as $path):
       $url[] = \Yii::$app->request->BaseUrl.'/web'.$path; 
  endforeach;
  return $url; // returning al urls
}
现在,您可以查看所有url上的循环,并在每个url上附加图像

[
    'label' => 'Hazards',  
    'format' => 'raw',   
    'value' => function ($data) {

        $images = '';
        // append all images
        foreach($data->getPictogramUrl() as $url):
            $images = $images.Html::img($url, ['alt'=>'myImage','width'=>'20','height'=>'30']);
        endforach; 
        return $images;
    },
],

我明白了,没有区别。。它只返回1个图像?更新了模型中的所有三个函数??检查
getPictogramsID()
的结果,它是否返回三个值??