Yii2 gridview - модальное отображение только в другой строке таблицы, если я разверну первую строку - PullRequest
0 голосов
/ 28 апреля 2020

Я использую kartik \ grid \ GridView и kartik \ grid \ ExpandRowColumn. В \ kartik \ grid \ ExpandRowColumn gridview я использую модальные для создания значения кода. Модальное всплывающее окно в каждой строке при нажатии на кнопку «Создать значение кода» на файле expandRowColumn, если я продолжу раскрывать первую строку таблицы. Но проблема, если я свернул первую строку и развернул любую другую строку и нажал кнопку «Новое значение кода», не появляется.

Может кто-нибудь мне помочь? Я видел, что здесь есть неотвеченный топи c для той же проблемы здесь Yii2 gridview - модальное отображение только при нажатии на первую строку

code-value-master / index. php

<?=
GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'class' => '\kartik\grid\ExpandRowColumn',
            'value' => function ($model, $key, $index, $column) {
                return GridView::ROW_COLLAPSED;
            },
            'detail' => function ($model, $key, $index, $column) {
                $searchModel = new app\models\CodeValueSearch();
                $searchModel->code_type = $model->code_type;
                $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

                return Yii::$app->controller->renderPartial('_codevalue', [
                            'searchModel' => $searchModel,
                            'dataProvider' => $dataProvider,
                            'model' => $model,
                ]);
            },
                    'expandIcon' => '<span class="glyphicon glyphicon-plus"></span>',
                    'collapseIcon' => '<span class="glyphicon glyphicon-minus"></span>',
                ],

                'code_type_lbl',

                ['class' => 'yii\grid\ActionColumn', 'template' => '{update}'],
            ],
        ]);
        ?>

кодовое значение-master / _codevalue. php

    <?php
    echo Html::button('New Code Value', ['value' => Url::to(['code-value/create', 'cid' => $model->code_type]),
        'title' => 'Create Client Contact', 'class' => 'modalBtnCreate btn btn-success']);
    ?>

    <?php

    Modal::begin([

        'header' => '<h4>Create Code Value</h4>',
        'id' => 'modalCreate',
        'size' => 'modal-lg',
    ]);

    echo "<div class='modalContentCreate'></div>";
    Modal::end();
    ?>

    <?php
    $this->registerJs("$(function() {
       $('.modalBtnCreate').click(function(e) {
        e.preventDefault();
         $('#modalCreate').modal('show')
         .find('.modalContentCreate')
         .load($(this).attr('value'));
       });
    });");
?>

1 Ответ

0 голосов
/ 28 апреля 2020

Добавьте это к своему значению кода-master / index. php.

<div class="modal remote fade" id="codevalueform">
        <div class="modal-dialog">
            <div class="modal-content loader-lg"></div>
        </div>
</div>

Добавьте это внутри _codevalue. php

<?=Html::a('New Code Value <span class="glyphicon glyphicon-plus"></span>',
                    ['/code-value/create','cid'=> $model->code_type], 
                    [
                        'title' => 'Add',
                        'data-toggle'=>'modal',
                        'data-target'=>'#codevalueform',
                    ]
                   );
                ?>

Теперь внутри Code-value Контроллер

public function actionCreate($cid){
    $modell=//your Code here
    return $this->renderAjax('create_form', [
        'model' => $model]);
   }

Теперь создайте файл вида, например: create_form. php

<div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">New Code Value </h4>
</div>
<div class="modal-body">

</div>

Запустите код, это должно работать.

...