我如何定制Yii2 gridview排序?

Sat*_*ish 3 php datagrid yii2

如何使用自定义gridview标题排序?

请给之间的差别label,并headerYii2 gridview小部件dataprovider.

这是我的代码:

    <?= GridView::widget([
            'dataProvider' => $dataProvider,
            'columns' => [
                 [
                   'class' => 'yii\grid\DataColumn',
                   'value' => function ($data) {
                    return $data->myTitle; 
                    },
                   'headerOptions' => ['style'=>'text-align:center'],
                   'header' => 'Page Title',
                   'label' => 'Title'
                ],
   ]); ?>
Run Code Online (Sandbox Code Playgroud)

headerlabel执行相同的功能?

我该如何进行排序$data->myTitle

这是我的输出屏幕:

在此输入图像描述

我想要页面标题,状态,修改日期应该是活动的.

提前致谢.

Sat*_*ish 14

找到了答案.

请在搜索模型中向ActiveDataProvider添加属性.

$dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => [
                'pageSize' => 5,
                ],
        'sort' => ['attributes' => ['myTitle']],
       ]);
Run Code Online (Sandbox Code Playgroud)

在窗口小部件中添加属性选项:

    <?= GridView::widget([
            'dataProvider' => $dataProvider,
            'columns' => [
                 [
                   'class' => 'yii\grid\DataColumn',
                   'value' => function ($data) {
                    return $data->myTitle; 
                    },
                   'headerOptions' => ['style'=>'text-align:center'],
                   'attribute' => 'myTitle',
                   'label' => 'Page Title'
                ],
   ]); ?>
Run Code Online (Sandbox Code Playgroud)


top*_*her 8

由于myTitle是数据库中的字段而不是自定义值,因此您只需使用属性即可.其余可能是不必要的,例如默认class值为DataColumn

'columns' => [ 
    [ 
        'attribute' => 'myTitle',
        'label' => 'Label',
    ]
Run Code Online (Sandbox Code Playgroud)