Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Modal pop up in grid view in yii2

Tags:

gridview

yii2

i would like to pop up a modal when i click on a button inside grid view. is this possible with yii2 gridview?

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],


            'time_zone',
            'no_of_users',
            'bill_name',
            'bill_address',
            'names.name',
            'bill_state',
            'bill_city',
            'bill_postal',
            'bill_mobile',

            ['header'=>'Plan Info',
            'value'=> function($data)
                    { 
                        //~ print_r($data);die();
                        return  Html::a(Yii::t('app', ' {modelClass}', [
                            'modelClass' => 'details',
                        ]), ['userdetails/plans','id'=>$data->id], ['class' => 'btn btn-success    ']

                        );      
                    },
            'format' => 'raw'
            ],



            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>

in the above grid view i want a modal to popup when i click on the button 'details'.

thanks,

like image 931
Bloodhound Avatar asked Oct 03 '15 05:10

Bloodhound


1 Answers

Yes, it is possible. to achieve this follow below steps.

Add Modal code above GridView code.

<?php
    yii\bootstrap\Modal::begin(['id' =>'modal']);
    yii\bootstrap\Modal::end();
?>

After that add id in your details button. Like as,

[
    'header'=>'Plan Info',
    'value'=> function($data)
              { 
                   return  Html::a(Yii::t('app', ' {modelClass}', [
                          'modelClass' => 'details',
                          ]), ['userdetails/plans','id'=>$data->id], ['class' => 'btn btn-success', 'id' => 'popupModal']);      
              },
     'format' => 'raw'
],

And than register JavaScript at top or bottom of view page.

$this->registerJs("$(function() {
   $('#popupModal').click(function(e) {
     e.preventDefault();
     $('#modal').modal('show').find('.modal-content')
     .load($(this).attr('href'));
   });
});");
like image 161
GAMITG Avatar answered Oct 06 '22 20:10

GAMITG