【问题标题】:Yii2: Display modal from a clickable row in GridviewYii2:从Gridview中的可点击行显示模态
【发布时间】:2018-08-28 08:01:01
【问题描述】:

我想在 Gridview 中单击一行后显示模态,但模态内容不会显示。

我的代码缺少什么或有什么问题?

在main.php中:

    <?php
    Modal::begin([
        'header'=>'<h4>Update '. $this->title .'</h4>',
        'id'=>'update-modal',
        'size'=>'modal-md'
    ]);

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

Modal::end();
?>

在 index.php 中:

    <?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        [
            'attribute'=>'name',
            'format'=>'raw',
            'value'=>function ($model) {
                    return Html::a($model->name, ['/unit/unit/update', 'id'=>$model->id], ['class' => 'update-modal-link',
                                                'data-toggle'=>"modal",
                                                'data-target'=>"#update-modal",
                                            ]);
             }
        ],
    ],
]); ?>

在 main.js 中:

    $(function () { 
        $('.update-modal-link').click(function () {
            $('#update-modal')
                .modal('show')
                .find('#updateModalContent')
                .load($(this).attr('value'));
        });
    });

【问题讨论】:

    标签: gridview yii2 modal-dialog


    【解决方案1】:

    您应该使用 javascript 或默认的 data-toggledata-target 属性,您正在尝试通过 2 个来源加载它,我怀疑您面临的问题是它加载了模式并立即消失。

    如果正确,请从 GridView 列中的锚链接中删除属性并将其更新为以下内容。

    [
        'attribute' => 'name',
        'format' => 'raw',
        'value' => function ($model) {
            return Html::a($model->name, ['/unit/unit/update', 'id' => $model->id], ['class' => 'update-modal-link']);
        }
    ],
    

    然后,您尝试为无效的锚分配 value 属性,您需要定位锚的 href 属性以获取相对 url 并加载模式内容。

    将您的 javascript 代码更改为以下

    $(function () { 
        $('.update-modal-link').click(function (e) {
            e.preventDefault();
            $('#update-modal')
                .modal('show')
                .find('#updateModalContent')
                .load($(this).attr('href'));
        });
    });
    

    希望这会有所帮助。

    【讨论】:

    • @E.Baguio 不客气,如果对你有用,请将答案标记为正确
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 2021-08-17
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多