如何在yii2 gridview数据行中获取上一行和下一行模型ID

SAQ*_*FAR 2 yii2 yii2-advanced-app yii2-basic-app

在 GridView 小部件中并显示我从自定义查询中获取的 ActiveDataprovider 结果时,我想在显示记录时获取下一行和上一行 $model->id,我需要做的是显示指向上一个和下一个帖子的链接阅读模式,我的 gridview 已经生成了 post 视图的链接,但似乎没有获取下一个 DB 行的记录 ID 的选项

我已经尝试在可用函数中使用默认值,但它们似乎没有任何相关数据

GridView::widget([
    'dataProvider' => $dataProvider,
    ...
    'columns' => [
        ...
        [
           'label'=>'Post Name',
           'format' => 'raw',
           'value'=>function ($data, $key, $index, $obj) {
                // this is what i have right now
                return Html::a($data->name, ['view', 'id' => $data->id]);

                //ideally i would like something like this
                return Html::a($data->name, ['view', 
                     'id' => $data->id,
                     'prev' => $prev->id,
                     'next' => $next->id
                ]);
            },
        ],
    ],
    ....
)];
Run Code Online (Sandbox Code Playgroud)

Fab*_*lli 5

尝试通过$dataProvider内部value callback

GridView::widget([
    'dataProvider' => $dataProvider,
    ...
    'columns' => [
        ...
        [
           'label'=>'Post Name',
           'format' => 'raw',
           'value'=>function ($data, $key, $index, $obj) use($dataProvider) {


                // Check prev and next object
                $models = $dataProvider->models;
                $prev = ($index>0) ? $models[$index-1] : null;
                $next = ($index < ((count($model)-1)) ? $models[$index+1] : null; 

                //ideally i would like something like this
                return Html::a($data->name, ['view', 
                     'id' => $data->id,
                     'prev' => ($prev != null) ? $prev->id : '',
                     'next' => ($news != null) ? $next->id : '',
                ]);
            },
        ],
    ],
    ....
)];
Run Code Online (Sandbox Code Playgroud)