Yii2 - 为所有gridview创建gridview定制“模型/样式”并调用样式

时间:2017-04-26 10:28:06

标签: php gridview model yii2 yii2-advanced-app

我在Yii2中自定义了gridview,以某种方式显示列,标题和寻呼机

'dataProvider' => $dataProvider, 
    //'filterModel' => $searchModel,
    'filterSelector' => 'select[name="per-page"]',
    'tableOptions'=> ['class'=>'table datatable-header-footer datatable-header-footer'],
    'showFooter' => true,
    'layout'=>"{items}\n\n{summary}\n\n<div class='text-right'>{pager}</div>\n",
    //'summary' => "{begin} - {end} {count} {totalCount} {page} {pageCount}",
    'summary' => " <br/> Affichage de {begin} à {end} des {totalCount} lignes <br/> <br/>",
    'formatter' => ['class' => 'yii\i18n\Formatter','nullDisplay' => ' - '],
    'pager' => [
        'nextPageLabel' => '→',
         'prevPageLabel' => '←',
        'firstPageLabel' => true,
        'maxButtonCount' => 5,
        'lastPageLabel'  => true
    ],
    'columns' => [
       // ['class' => 'yii\grid\SerialColumn'],
        //'id', ...
['class' => 'yii\grid\ActionColumn',
        'contentOptions' => ['style' => 'width:10%;'],
        'header'=>'Actions',
        'template' => '{all}',
        'buttons' => [
            'all' => function ($url, $model, $key) {
                return ButtonDropdown::widget([
                    'encodeLabel' => false,  
                    'label' => 'Choisir',
                    'dropdown' => [
                        'encodeLabels' => false,   
                        'items' => [
                            [
                                'label' => \Yii::t('yii', '<i class="icon-search4"></i> Details'),
                                'url' => ['view', 'id' => $key],
                            ],
                            [
                                'label' => \Yii::t('yii', '<i class="icon-pencil5"></i> Modifier'),
                                'url' => ['update', 'id' => $key],
                                'visible' => true,   
                            ],
                            [
                                'label' => \Yii::t('yii', '<i class="icon-list"></i> Annonces'),
                                'url' => ['annonces', 'agence_id' => $key],
                                'visible' => true,   
                            ],
                            [
                                'label' => \Yii::t('yii', '<i class="icon-list2"></i> Agents'),
                                'url' => ['professionnels', 'agence_id' =>$key],
                                'visible' => true,   
                            ],
                            [
                                'label' => \Yii::t('yii', '<i class="icon-bin"></i> Supprimer'),
                                'linkOptions' => [
                                    'data' => [
                                        'method' => 'post',
                                        'confirm' => \Yii::t('yii', 'Are you sure you want to delete this item?'),
                                    ],
                                ],
                                'url' => ['delete', 'id' => $key],
                                'visible' => true,   // same as above
                            ],
                        ],
                        'options' => [
                            'class' => 'dropdown-menu-right', // right dropdown
                        ],
                    ],
                    'options' => [
                        'class' => 'btn-default',
                        'style' => 'padding-left: 5px; padding-right: 5px;',   // btn-success, btn-info, et cetera
                    ],
                    'split' => true,     
                ]);

我想知道是否有办法创建gridview“样式”,以便我可以调用并将此样式应用于项目中的每个gridview!

1 个答案:

答案 0 :(得分:1)

是的,使用您自己的方法扩展GridView类,设置所有属性,覆盖您需要的任何内容,并使用您的类而不是默认的GridView。