模态对话框中的Yii2过滤网格视图?

时间:2016-08-28 12:06:21

标签: modal-dialog yii2 pjax

我一直在尝试创建在窗体视图中单击按钮时触发的 yii \ jui \ Dialog 。 Dialog本身将使用 Yii 2.0 在其中包含 Gridview 小部件。

我已设法创建对话框并使用 Gridview 小部件填充它。我遇到的唯一问题是对话框中的 Gridview 无法正确过滤。过滤器过程很好,但每次我过滤 Gridview 时,Dialog模式也将被关闭。

我也尝试通过在Pjax小部件中封装gridview来使用Pjax。这次模态对话框不会被关闭。但它只能过滤1次。一旦 Gridview 被过滤,我们就不能再过滤它了。

下面是我的" _form" view :(我正在使用名为" cari"触发弹出对话框的按钮)

<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'judul')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'isi')->textarea(['rows' => 6]) ?>

<?= $form->field($model, 'kategori_id', [
    'addon' =>  ['append' => 
                    ['content'=> 
                        Html::button('x', ['class'=>'btn btn-default','name' => 'del_kat', 'id' => 'del_kat', 'onclick' => '$("#kat_id").val("");'])  . PHP_EOL .
                        Html::button('Cari', ['class'=>'btn btn-primary','id' => 'modal_kat', 'onclick' => '$("#kategori_dialog").dialog("open"); return false;' ]),

                        'asButton' => true
                    ]
                ]
])->textInput(['id'=> 'kat_id', 'readonly' => true]) ?>

这是我的 GridView 代码:

GridView::widget([
    'dataProvider' => $kategoriModel->search(Yii::$app->request->queryParams),
    'filterModel' => $kategoriModel,
    'columns' => [
        'kategori_id',
        'nama',
         [
            'label' => 'test',
            'format' => 'raw',
            'value' => function ($data) {

                return Html::button('+', ['class'=>'btn btn-default','id' => 'modal_kat', 'onclick' => '$("#kategori_dialog").dialog("close"); $("#kat_id").val("'.$data->kategori_id.'");' ]);
            },
        ],


    ],

]);

这里是对话代码:

Dialog::begin([
'id' => 'kategori_dialog',
'clientOptions' => [
    'modal' => true,
    'autoOpen'=>false,
     'title'=>'List Kategori',
     'width'=>'auto',
],

]);

Pjax::begin(['id' => 'kategori-pjax', 'enablePushState'=>false]);
echo $kategoriGrid;
Pjax::end(); 

Dialog::end();

正如大家们所见,我试图使用Pjax,但我无法按预期工作(因为我只能过滤 Gridview 一次然后可以再次过滤)。我记得在Yii 1.1中做的很好(我正在使用CJuiDialog)。

所以我想知道我在 Yii 2.0 中是否遗漏了一些东西?我是Pjax的新手,所以我想我想念一些必须在Pjax小部件中设置的属性。

1 个答案:

答案 0 :(得分:0)

就我而言,解决方法是使用Kartik的Gridview。我安装它并将Pjax属性设置为true。

use kartik\grid\GridView; 
GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $model,
    'columns' => $gridColumns,
    'pjax' =>true,
]);

现在我可以在对话框中成功过滤网格。看起来Kartik在使用Pjax Container包装Grid时有更好的实现。