KirraBu
@KirraBu
Начинающий программист

Не открывается модальное окно если есть pjax или GridView?

в layout\main есть модальное кно
<?php
yii\bootstrap\Modal::begin([
    'headerOptions' => ['id' => 'modalHeader'],
    'id' => 'my-modal',
    'toggleButton'=>['click'],
    'size' => 'modal-lg',
]);
echo "<div id='modalContent'></div>";
yii\bootstrap\Modal::end();
?>

Открывается оно при нажатии кнопки во вьюхе
<?= Html::button('modal', ['value' => Url::to(['admin/add-device-type']), 'title' => 'title', 'class' => 'modal-test btn btn-success']); ?>


Вот только всё это работает если во вьюхе нет ни GridView ни Pjax.
Из-за чего такое может быть? в какую сторону капать?

скрипт подключен в AppAsset
public $js = [
        'js/script.js',
        'js/jquery-2.2.3.min.js',
        'js/app.min.js',
    ];


script.js
$(function () {
    $(document).on('click', '.modal-test', function () {

        if ($('#my-modal').data('bs.modal').isShown) {
            $('#modal').find('#modalContent')
                .load($(this).attr('value'));
            document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';
        } else {

            $('#my-modal').modal('show')
                .find('#modalContent')
                .load($(this).attr('value'));
            document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';
        }
    });
});


view

<?php

use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\Pjax;
use yii\helpers\Url;

?>

<div class="col-md-4">
    <div class="box">
        <div class="box-header">
            <h1 class="box-title">Типы оборудования</h1>

        </div>
        <div class="box-body">
            <?= GridView::widget([
                'dataProvider' => $device_type,
                'layout' => "{pager}{items}",
                'tableOptions' => [
                    'class' => 'table table-bordered table-hover'
                ],
                'columns' => [
                    'type_name:text:Тип',
                    'category:text:Категория',
                    [
                        'attribute' => 'Удалить',
                        'format' => 'raw',
                        'value' => function ($model) {
                            return Html::a("<span class=\"fa fa-trash-o\"></span>", ['admin/delete-device', 'id'=>$model['id']]);
                        },
                    ],

                ],
            ]); ?>
            
            <?= Html::button('modal', ['value' => Url::to(['admin/add-device-type']), 'title' => 'title', 'class' => 'modal-test btn btn-success']); ?>
        </div>
    </div>
</div>
  • Вопрос задан
  • 368 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Скорее всего такое происходит из за конфликта jquery . Вы в AppAsset подключаете свой jquery, а grid и прочие элементы подключают yii\web\JqueryAsset в результате чего у Вас и происходит конфликт (читайте про зависимость ресурсов в yii). Соответственно Вам нужно исключить из AppAsset файл jquery-2.2.3.min.js
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы