kimono
@kimono
Web developer

Как заставить работать Kartik-v DetailView и Pjax?

Имеется GridView, также для каждой модели из GridView имеется кнопка для вызова модального окна, внутри которого DetailView от Kartik-v обернутый в Pjax.
Первое модальное окно отрабатывает нормально, последующие вызывают перезагрузку страницы. WTF?
Pjax::begin(['enablePushState' => false, 'id' => 'model-contacts']);
        echo GridView::widget([
            'dataProvider' => new ActiveDataProvider([
                'query' => $model->getContacts(),
            ]),
            'columns'      => [
                ['class' => 'yii\grid\SerialColumn'],

                'type',
                'title',
                'data',
                'lat_long',
                'comment',

                ['class' => 'yii\grid\ActionColumn'],
            ],
        ]);
        Pjax::end();

foreach ($model->contacts as $index => $contact) {
            Modal::begin([
                'header'       => '<h4 class="modal-title">Detail View Demo</h4>',
                'toggleButton' => ['label' => '<i class="glyphicon glyphicon-th-list"></i> Detail View in Modal', 'class' => 'btn btn-primary'],
            ]);
            $pjax = Pjax::begin(['timeout' => 3000]);
            echo DetailView::widget([
                'model'       => $contact,
                'mode'        => DetailView::MODE_EDIT,
                'panel'       => [
                    'heading' => 'Контакт #' . $contact->id,
                    'type'    => DetailView::TYPE_DEFAULT,
                ],
                'attributes'  => [
                    'id',
                    'type',
                    'title',
                    'data',
                    'lat_long',
                    'comment',
                ],
                'formOptions' => [
                    'options'                => ['data-pjax' => 1],
                    'enableClientValidation' => false,
                ],
            ]);
            Pjax::end();
            Modal::end();

            $this->registerJs("
                $('#{$pjax->getId()}').on('pjax:end', function () {
                    $.pjax.reload({container: '#model-contacts'});
                })
            ");
        }
  • Вопрос задан
  • 719 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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