如何在Yii2 gridview中显示操作按钮作为下拉列表?

时间:2015-05-17 10:57:04

标签: gridview yii yii2 yii2-advanced-app

我想在Yii 2 gridview中显示操作按钮作为下拉列表。如何在不使用任何扩展的情况下实现这一目标

我在下面添加了源代码 -

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

                'id',
                'name',

                ['class' => 'yii\grid\ActionColumn',
                    'template'=>'{view}{update}{delete}',
                    'buttons' => [
                        'view' => function ($url, $model) {
                            return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [
                                'title' => Yii::t('app', 'View'),
                            ]);
                        },
                        'update' => function ($url, $model) {
                            return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
                                'title' => Yii::t('app', 'Update'),
                            ]);
                        },
                    ],

                    'urlCreator' => function ($action, $model, $key, $index) {
                        if ($action === 'view') {
                            $url ='/site/view?id='.$model->id;
                            return $url;
                        }
                        if ($action === 'update') {
                            $url ='/site/update?id='.$model->id;
                            return $url;
                        }
                    }
                ],
    ],
]); ?>

2 个答案:

答案 0 :(得分:1)

我是这样做的:

use yii\bootstrap\ButtonDropdown;

// ... GridView configuration ...
[
    'class' => 'yii\grid\ActionColumn',
    'template' => '{all}',
    'buttons' => [
        'all' => function ($url, $model, $key) {
            return ButtonDropdown::widget([
                'encodeLabel' => false, // if you're going to use html on the button label
                'label' => 'Options',
                'dropdown' => [
                    'encodeLabels' => false, // if you're going to use html on the items' labels
                    'items' => [
                        [
                            'label' => \Yii::t('yii', 'View'),
                            'url' => ['view', 'id' => $key],
                        ],
                        [
                            'label' => \Yii::t('yii', 'Update'),
                            'url' => ['update', 'id' => $key],
                            'visible' => true,  // if you want to hide an item based on a condition, use this
                        ],
                        [
                            'label' => \Yii::t('yii', 'Delete'),
                            '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',   // btn-success, btn-info, et cetera
                ],
                'split' => true,    // if you want a split button
            ]);
        },
    ],
],
// ... additional GridView configuration ...

您可以查看ButtonDropdown文档here

答案 1 :(得分:0)

Google“Bootstrap Dropdowns”然后使用您找到的内容替换'template'=&gt;'{view} {update} {delete}'中的操作。留下这三个动作而不是文本。

问候。