Yii2 gridview номер текущей строки первая последняя строка

мне нужна помощь с Yii2 GridView. Я визуализирую таблицу, но хочу поместить специальный значок в первую и последнюю строку. есть ли способ узнать, в какой строке я?

    <?= GridView::widget([
    'dataProvider' => $dataProvider,
    "tableOptions" => ['class' => 'table table-striped table-bordered brand-list',"style"=> ""],
    /*'filterModel' => $searchModel,*/
    'columns' => [                  
        ['class' => 'yii\grid\SerialColumn'],

        [
            'class' => 'yii\grid\ActionColumn',
            'template' => '{sort-up}   {sort-down}',

            'buttons' => [
                        'sort-up' => function ($url, $brand, $key)  {
                            $url = \Yii::$app->urlManager->createUrl(["brand/sort", 'id' => $brand->id , 'dir' => 'up']);
                            return Html::a( ""  , '#', ['data-url' => $url, 'title' => "test",
                                                     'data-title' => "sort up",
                                                    'class' => 'glyphicon glyphicon-chevron-up']);

                        },
                        'sort-down' => function ($url, $brand, $key) {                                
                            $url = \Yii::$app->urlManager->createUrl(["brand/sort", 'id' => $brand->id , 'dir' => 'down']);
                            return Html::a('', '#', ['data-url' => $url, 'title' => "test",
                                                     'data-title' => "sort up",
                                                    'class' => 'glyphicon glyphicon-chevron-down']);
                        },
            ],
        ],            
        [
            'attribute' => 'name',                
            'label' => Yii::t('admin:brand', 'brand_name'),                
        ],                        
    ],      
]); ?>

так что-то вроде:

'buttons' => [
                    'sort-up' => function ($url, $brand, $key)  {
                        if($currentRow == 1){
                        return "firstRow";
                        }


                    },
                    'sort-down' => function ($url, $brand, $key) {                                
                        if($currentRow == ROWS_COUNT){
                            return "lastRow";
                        }
                    },
        ],

Я ценю вашу помощь. С Уважением Ваэль

0
0
654
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте $dataprovider->models, чтобы построить карту всех моделей, отображаемых на текущей странице,
затем вы можете использовать array_search () для получения текущего индекса или просто перезагрузить() и конец() для получения первого и последнего элемента

// map will contain all model ids in the the same order they are displayed in
$map = ArrayHelper::getColumn($dataprovider->models);

echo GridView::widget([
    'dataProvider' => $dataProvider,
    // ...
    'columns' => [
        // ...
        [
            'class' => 'yii\grid\ActionColumn',
            'buttons' => [
                'sort-up' => function ($url, $brand, $key) use ($map) {
                    if ($key == reset($map)){
                        return "firstRow";
                    }
                },
                'sort-down' => function ($url, $brand, $key) use ($map) {                                
                    if($key == end($map)){
                        return "lastRow";
                    }
                },
            ]
        ]
    ]
])

Это было полезно, но я подумал, что это можно каким-то образом реализовать в самом GridView. Спасибо за помощь :)

Wael 15.08.2018 07:03

Другие вопросы по теме