gridviews 단일 행에 여러 이미지를 표시하려고합니다. 예 : 표 A, 표 B 및 표 C가 있습니다.Yii2 gridview 행에 여러 이미지 표시
표 A에는 my_id가 있습니다.
표 B에서 my_id는 외래 키입니다. my_id와 함께 c_id를가집니다.
표 C는
표 C는 화상을 표시하기위한 파일 경로를 가지고 표 B.에서 참조되는 C_ID있다. 다음 표 난
my_id
을 가지고에
다음과 같이 1, 2, 3, 4, 5, 6
에서 표 B 난 my_id
있다. 다음 나도 c_id
이 3
표 B에서 1, 1, 1, 2, 3,. 1, 2, 3, 4, 5, 6입니다.
내 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']);
},
],
내 인덱스 파일 그리드 뷰 이미지 코드 팁이 .. 도구 팁 성공적으로 표시하지만 루프 내에서 이루어지지 않습니다 생각합니다. ct 방식으로 내 이미지를 반복합니다.
여기 내 업데이트 된 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;
}
],
이미지를 모든 URL을 통해 루프를 확인하고 추가? –
세 가지 기능이 모두 모델에서 업데이트 되었습니까 ?? –
'getPictogramsID()'의 결과를 확인하십시오. 세 개의 값을 반환합니까 ?? –