Customise grid view in yii2

54,404

Solution 1

Got it.By setting the layout property,we can achieve it.

'layout'=>"{summary}\n{items}\n{pager}"

Solution 2

To change only summary option, you can use:

'summary' => "{begin} - {end} {count} {totalCount} {page} {pageCount}",

Then, if you want to empty summary set with empty string value like:

'summary'=> "",

and to change layouts you can use:

'layout'=> "{summary}\n{items}\n{pager}"

Then, if you want to empty layouts set layout with empty string value like:

'layout'=> "",

Ref link

Ref link

So, for sample, i think bellow sample code can be help know how to change and custome GridView table in Yii 2:

                <?= \yii\grid\GridView::widget([
                'id' => 'table',
                'dataProvider' => $dataProvider,
                'layout'=>"{sorter}\n{pager}\n{summary}\n{items}",
                'summary' => "Showing {begin} - {end} of {totalCount} items",
                'tableOptions' => ['class' => 'table  table-bordered table-hover'],
                'rowOptions' => function ($model, $key, $index, $grid) {
                    return [
                        'style' => "cursor: pointer",
                        'onclick' => 'location.href="'
                            . Yii::$app->urlManager->createUrl('test/index')
                            . '?id="+(this.id);',
                    ];
                },
                'columns' => [
                    [
                        'class' => 'yii\grid\SerialColumn',
                        'contentOptions' => ['style' => 'width: 20px;', 'class' => 'text-center'],
                    ],
                    [
                        'class' => 'yii\grid\DataColumn',
                        'attribute' => 'date',
                        'headerOptions' => ['class' => 'text-center'],
                        'label' => 'Date',
                        'contentOptions' => ['style' => 'width: 130px;', 'class' => 'text-center'],
                    ],
                        'template' => '{view}',
                        'buttons' => [
                            'view' => function ($url, $model) {
                                return \yii\helpers\Html::a('<div class="text-center"><em data-toggle="tooltip"
                                                            data-placement="top" title="more detail"
                                                            class="fa fa-external-link-square text-warning"></em></div>',
                                    (new yii\grid\ActionColumn())->createUrl('test/index', $model, $model['id'], 1), [
                                        'title' => Yii::t('yii', 'view'),
                                        'data-method' => 'post',
                                        'data-pjax' => '0',
                                    ]);
                            },
                        ]
                    ],
                ],
            ]); ?>

Solution 3

if you want only grid items use 'layout'=>"{items}"

if you want only summary use 'layout'=>"{summary}"

if you want only sorter use 'layout'=>"{pager}"

Share:
54,404
Dency G B
Author by

Dency G B

More than 8 years of experience in the area of software development. I am a solution architect with sound logical skills, who can transform your ideas into the most productive and cost-effective software solutions. Learning everything on my own and exploring new technologies, is my passion. I always love the company of positive-minded people who mutually motivate and dream a big future.

Updated on January 21, 2020

Comments

  • Dency G B
    Dency G B about 4 years

    How to remove summary and sorter for a particular grid view in Yii2. In Yii1.1 we can do that by setting the template property. In yii2 how to achieve this?

  • Dency G B
    Dency G B about 10 years
    that gives me an unknown property exception! Its yii2! :-)
  • 111
    111 over 7 years
    Error- Undefined variable: count. $dataProvider->count fixed that for me.
  • Sajjad Dehghani
    Sajjad Dehghani over 7 years
    'count' come from controller that passed on view render, You can remove 'count' variable.