我有以下代码在 GridView::widget 中呈现数据库(Blob)中的图片。单击图片时,将呈现另一个控制器方法,但在同一选项卡中。我想在另一个选项卡中呈现此方法。
'target' => '_blank'
不适用于此代码。我怎样才能实现这个目标?
[
'attribute' => 'photo',
'label' => 'Photo',
'format' => 'raw', // hier nicht html,da das Bild sonst nicht angezeigt wird
'vAlign' => 'middle',
'value' => function($model) {
$url = 'data:image/jpeg;base64,' . base64_encode($model->photo);
return Html::a(
Html::img($url, ['alt' => 'Kein Photo gefunden', 'class' => 'img-circle', 'style' => 'width:50px;height:50px']), [Url::to('ds-substanz/vergroessern'), 'id' => $model->id], ['title' => 'Photo vergrößern', 'target' => '_blank']
);
}
],
检查您的gridview是否未包含在Pjax中。在这种情况下,您应该使用 Pjax 中的 linkSelector 来获取其他所需的链接。
否则,最好使用 JavaScript 和 jQuery 或......
浏览器可能会忽略它。他们有针对此类问题的设置,当然你的语法是正确的。
您可以执行以下操作:
Html::a('IMG.....', ['ds-substanz/vergroessern', 'id' => $model->id], ['onclick'=>"window.open(this.href,'_blank');return false;",'target' => '_blank']);
祝你好运。
首先,检查一下你是否在gridView中使用了pjax:
'pjax' => true
。
在这种情况下,将 'data-pjax' => "0"
添加到 Html::a() 的选项中。
'value' => function ($model) {
$url = 'data:image/jpeg;base64,' . base64_encode($model->photo);
return Html::a(
Html::img($url, ['alt' => 'Kein Photo gefunden', 'class' => 'img-circle', 'style' => 'width:50px;height:50px']),
[Url::to('ds-substanz/vergroessern'), 'id' => $model->id],
['data-pjax' => "0", 'title' => 'Photo vergrößern', 'target' => '_blank']
);
}