Popup window at YII2 gridview 问题

Popup window at YII2 gridview problems

我尝试为我的公司制作一个网络应用程序(CRUD 应用程序)来管理他们的存储。 我使用 Yii2 框架来简化它,并使用了很多来自 kartik-v 的插件 但是我对弹出 window 有疑问。实际上,我必须在 gridview 中显示所有存储项目,并且我想为其功能创建一个弹出窗口 windows。我已经为 "create" 完成了此操作,但我无法对显示、编辑和更新功能执行相同的操作,因为它(按钮 link)包含在 table -> 操作列中。 我试图找到一些答案,它引导我进入弹出式对话,但它无法正常工作。我尝试查看按钮。我显示弹出窗口一段时间,然后它指向查看页面。我真的不想让它只是一个弹出窗口。有人可以帮我吗?

这是我的操作网格列代码:

       [
            'class' => 'kartik\grid\ActionColumn',
            'header' => 'Actions',
            'vAlign' => 'middle',
            'template' => '{view} {update} {delete} {popupview}',
            'buttons' => [
                'popupview' => function ($url, $model) {
                    $url = Url::to(['companies/view' , 'id' => $model->company_id]);
                    return Html::a('<span class="glyphicon glyphicon-eye-open" title"></span>',$url, ['class' => 'btn btn-success', 'value' => Url::to(['companies/view' , 'id' => $model->company_id]), 'id' => 'viewButton']);
                },
            ],
        ],

这是我的模态初始化:

<?php
    Modal::begin([
        'header' => '<h4>Companies</h4>',
        'id' => 'view',
        'size' => 'modal-lg',
    ]);

    echo "<div id='viewContent'></div>";

    Modal::end();
?>

这是我的 javascript 弹出窗口:

$(function(){
$('#viewButton').click(function(){
    $('#view').modal('show')
        .find('#viewContent')
        .load($(this).attr('value'));
});});

有人可以帮帮我吗??

当您单击按钮 link(您使用 link)时,它们会在视图页面上重定向,为防止这种情况,您应该使用

$('#viewButton').click(function(e){
   e.preventDefault();
   //rest of the code
});

但这还不够,要在模式中加载视图的内容,您必须像这样通过ajax调用它

$('#viewButton').click(function(e){
   e.preventDefault();
   $.ajax({
       url : '',
       data: '',
       success: function (response) {
          $('#viewContent').html(response);
    });

});

并且在您的控制器中,您必须使用 RenderAjax 方法来呈现视图