Yii2: отображение модальной строки из интерактивной в Gridview - PullRequest
0 голосов
/ 28 августа 2018

Я хочу отобразить модальное после щелчка строки в 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'));
        });
    });

1 Ответ

0 голосов
/ 28 августа 2018

Вы должны использовать либо javascript, либо атрибуты data-toggle и data-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'));
    });
});

Надеюсь, это поможет.

...