Урок 5: Вывод данных в gridview

Пожалуй ни один сайт не обходится без вывода данных в таблицах, поэтому сегодня мы поговорим о такой замечательной штуке, как gridview. Нет ничего проще, чем работа с этим классом.

1. Для начала выберите любую таблицу, из которой можно выводить данные. Для примера возьмём таблицу с юзерами — users. Предположим, что вам в админ панели нужно выводить следующие данные: id, логин, e-mail, дату регистрации и логин реферала. На примере этих данных мы научимся использовать gridview почти на максимум.

2. UserController и модель User должны быть у каждого, поэтому сразу приступим к написанию кода. Для начала нам нужно настроить получение логина реферала. Делается это очень просто, в модель User вставляем следующий код:

public function getRef() {
     return $this->hasOne(User::className(), ['id' => 'ref_id']);
}

Там где ref_id — название столбца с ID рефералов.

3. Теперь перейдём к самому главному — выводу данных. Сначала нужно настроить контроллер. Делаем это так:

public function actionIndex()
{        
     $dataProvider = new ActiveDataProvider([
        'query' => User::find(),
     ]);

     return $this->render('index', [
        'dataProvider' => $dataProvider,
        'sort' => false,
        'pagination' => false,
     ]);
}

Теперь, собственно, нужно вывести эту самую таблицу с вашими данными. Вставляем такой код в index.php:

<?= GridView::widget([ 'dataProvider' => $dataProvider,
    'showFooter' => false,
    'summary' => '',                       
    'columns' => [                                                                   
        [
            'attribute' => 'id',
            'format' => 'raw',
            'value' => function ($model) {
                return '<a href="/user/'.$model->id.'/">'.$model->id.'</a>'; 
            },                        
        ],
        [
            'attribute' => 'login',
            'format' => 'raw',
            'value' => function ($model) {
                return '<a href="/user/'.$model->id.'/">'.$model->login.'</a>'; 
            },                        
        ],
        'email',
        [
            'attribute' => 'date_add',
            'label' => 'Дата регистрации',    
            'format' => 'datetime',
            'contentOptions' => function ($model, $key, $index, $column) {          
                return ['class' => 'date'];
            },
            'headerOptions' => ['class' => 'date'],                    
        ],
        [
            'attribute' => 'ref_id',
            'format' => 'raw',
            'value' => function ($model) {
                return '<a href="/user/'.$model->ref_id.'/">'.$model->ref->login.'</a>'; 
            },                        
        ],
        [
            'class' => 'yii\grid\ActionColumn',
            'header' => "Действия",
            'buttons' => [
                'view' => function ($url, $model) {      
                    return Html::a('Просмотр', ['/controller/action'], ['class'=>'btn btn-primary']);
                }
             ],   
        ],
    ],
]);

Давайте разберёмся в коде. Во-первых, функция getRef получает все данные реферала, но больше всего нам нужен логин реферала. Затем мы в actionIndex получаем данные и ставим запрет pagination и сортировке. Лично мне это не нравится, я использую автоматическую подкрутку через ajax. Ну и напоследок мы в index.php вставляем код по выводу данных в таблице, там ничего сложного нет.

Как видите, ничего сложного в работе с gridView нет. Разумеется, есть и сложнее модели создания таблиц, но мы этого не будем трогать, потому что зачастую этого хватает.

Урок 5: Вывод данных в gridview: 2 комментария

  1. Здравствуйте, почему не публикуйте новые уроки. Лично мне это очень интересно.Особенно этот тема. Если продолжили бы эту тему это было очень круто.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *