nepster-web
@nepster-web

Как сделать фильтр поиска и сортировку в GridView Yii2 с измененным полем?

Ситуация такая, в админке есть список пользователей. Вывожу его при помощи виджета GridView.

echo GridView::widget([
    'id' => 'users-visits-grid',
    'dataProvider' => $dataProvider,
    'filterModel'  => $searchModel,
    
    //'options'      => ['class' => ''],
    'tableOptions' => ['class' => 'table table-bordered'],
    //'rowOptions'   => ['class' => ''],
    
    'layout' => '<div class="GridViewSummary">{summary}</div><div class="panel panel-default"><div class="table-responsive">{items}</div><div class="table-footer">{pager}</div></div>',
    
    'columns' => [
        [
            'attribute' => 'user',
            'format' => 'html',
            'value' => function ($model) {
                return UserColumn::widget([
                    'userId' => $model->id
                ]);
            }
        ],
        'role',
        [
            'attribute' => 'status',
            'format' => 'html',
            'value' => function ($model, $index, $widget) {
                    return ProcessingData::getSelectOptionString($model->status, User::getStatusArray());
                },
            'filterInputOptions' => ['class'=>'form-control', /*'class'=>'select-multiple'*/],
            'filter' => ProcessingData::getSelectOption(User::getStatusArray())
        ],
...


Поле username я заменил на после user и обрабатывают через свой видит, то есть показываю на экран не просто логин пользователя, а еще и аватарку, фио и иконку онлайн/офлайн.

Далее я бы хотел добавить сортировку и фильтр поиска, так же, как и было бы при username.

Однако если я использую 'attribute' => 'user', то нет ни фильтра, ни сортировки.
Если переименовать после на 'attribute' => 'username', будет другой косяк, будет и фильтр, и сортировка, но я бы хотел, чтобы поле называлось не Логин (как прописано в attributeLabels) а Пользователь.

Подскажите, пожалуйста, что мне нужно сделать?
  • Вопрос задан
  • 22055 просмотров
Решения вопроса 1
@AlexGx
Yii2 developer, business analytics
Спросонья может не так понял. Поидее решение выглядит так:

'attribute' => 'username',
            'format' => 'html',
            'label' => 'Пользователь',
            'value' => function ($model) {
                return UserColumn::widget([
                    'userId' => $model->id
                ]);
            }


Тобеж задайте `label`.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы