HTML中的目标_blank ::一个不起作用的yii2

时间:2017-02-13 10:08:31

标签: yii2-advanced-app

我正在使用下面的代码。

[
            'attribute' => 'Application',
            'format' => 'html',
            'value' => function ($dataProvider) {
                $student_username = $dataProvider->student_username;
                return Html::a('Print', Url::toRoute(['/coordinatorpanel/print-form', 'student_username' => $student_username]),
                    ['target' => '_blank', 'class' => 'btn btn-success center-block']);
            },
        ]

HTML OUTPUT:

<a class="btn btn-success center-block" href="/nse/frontend/web/index.php?r=coordinatorpanel%2Fprint-form&amp;student_username=COR39690113" target="_blank">

但是,当我点击链接时,我没有导航到新标签页,请求在同一个标​​签页中处理。我在“Mozilla”和“Chrome”上试过这个。

任何帮助都会被深深地重新考虑:)

5 个答案:

答案 0 :(得分:4)

在gridview中禁用Pjax。在我的情况下,我想在一个新窗口中显示一个图像,它在网格中显示为乱码。

'format' => "raw",
'value' => function ($d) {
     return Html::a($d->image_filename, '/'.$d->imagePath(),['target'=>'_blank', 'data-pjax'=>"0"] );
    },

答案 1 :(得分:4)

尝试更改您的代码,如下所示

[
        'attribute' => 'Application',
        'format' => 'raw',
        'value' => function ($dataProvider) {
            $student_username = $dataProvider->student_username;
            return Html::a('Print', Url::toRoute(['/coordinatorpanel/print-form', 'student_username' => $student_username]),
                ['target' => '_blank', 'class' => 'btn btn-success center-block']);
        },
    ]

此处使用'format' => 'raw'来避免格式​​化。

答案 2 :(得分:0)

我假设此代码位于某个格式化输出的窗口小部件中,因为这是常见的情况。如果是这样,只需将格式更改为raw

答案 3 :(得分:0)

我必须走另一条路才能正确运行代码。

You can click here for reference

以下是我修改并为我工作的代码。我不得不设置&#39; onclick&#39; event并将href设置为空。

[
    'attribute' => 'Application',
    'format' => 'raw',
    'value' => function ($dataProvider) {
        $student_username = $dataProvider->student_username;
        return Html::a('Print', '',
            ['onclick' => "window.open ('".Url::toRoute(['/coordinatorpanel/print-form', 
                          'student_username' => $student_username])."'); return false", 
             'class' => 'btn btn-success center-block']);
    },
],

答案 4 :(得分:0)

尝试这种方式,它也能完美运作 -

问题也可能出在pjax。即使您使用row格式。

在这种情况下,只需添加linkSelector param:

\yii\widgets\Pjax::begin(
    ['id' => 'samle', 'linkSelector' => 'a:not(.target-blank)']
);

并在链接中添加相应的css类:

return Html::a(
    'Print',
    ['/site/print', 'id' => $model->id],
    ['target'=>'_blank', 'class' => 'target-blank']
);

这将仅阻止来自pjax的这些链接,以便可以在新标签中打开它们。