1

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

表 A 有 my_id。

在表 B 中 my_id 是外键。与 my_id 一起,它还有 c_id。

表 C 有 c_id,在表 B 中有参考。

表 C 还具有显示图像的文件路径。

表 A中,我有my_id如下:1、2、3、4、5、6。

表 B我有my_id如下。1 ,1 ,1 ,2 ,3, 3。

表 B我也有c_id如下。1、2、3、4、5、6。

在表 C 中,我的 c_id 是:1、2、3、4、5、6。这些 id 具有与它们中的每一个相关联的文件路径。它们是不同的图像。

my_id现在,由于外键约束,我的 gridview 应该显示 3 个不同的图像。但它只显示 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;

        }
        ],
4

1 回答 1

1

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

在你的模型中

 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;
    },
],
于 2016-07-28T13:07:26.433 回答