2016-07-29 8 views
0

これは以前の質問に関連しています。画像の上にマウスを置くと、ツールチップのタイトルが動的に表示されます。私は以前の質問Click hereの関係を説明しました。これらの画像にデータツールチップを追加したいと思います。私のコードは以下の通りですグリッド表示の画像のYii2データツールチップ

[ 
     '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; 

     } 
    ], 

問題は私がループする時です。すべての画像が2回表示されます。いくつかのループ問題があります。 any1は私が解決策を見つけるのを助けることができます。ありがとう

+0

あなたgetPictogramName()関数はありませんいただきました? –

答えて

1

あなたのURLテーブルにも名前があるなら、あなたは名前と共にURLを返さなければなりません。

以下のスニペットのようにgetPictogramUrl関数を変更してみてください。

public function getPictogramUrl() 
{ 
    $url = []; 
    foreach($this->getPictogramPath() as $path): 
     $url[] = [\Yii::$app->request->BaseUrl.'/web'.$path,$this->name]; 
    endforeach; 
    return $url; // returning al urls 
} 

その後、あなたのビューで

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

     $images = ''; 
     // append all images 
     foreach($data->getPictogramUrl() as $url): 
      $images = $images.Html::img($url[0],['alt'=>'','width'=>'30','height'=>'30', 'data-toggle'=>'tooltip','data-placement'=>'left','title' => $url[1],'style'=>'cursor:default;']); 
     endforach; 
     return $images; 
    }, 
],