Колонка 'все' в GridView, при выпадабщем списке

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Rabijko
Сообщения: 22
Зарегистрирован: 2018.04.19, 14:59

Колонка 'все' в GridView, при выпадабщем списке

Сообщение Rabijko »

Подскажите, как в выпадающем списке GridView сделать, чтобы вместо пустой строки было написано, например 'все элементы'

Код: Выделить всё

       $dname = D::find()->orderBy('dname')->asArray()->all(); 
      // формируем массив с соответствующими id и dname
      $dnamelist = ArrayHelper::map($dname,'id', 'dname'); 
   ....
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'emptyText' => 'Результатов не найдено.',
        'summary' => "Показано <b>{begin} - {end}</b> из <b>{totalCount}</b> элементов",
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
 
             [ 'attribute' => 'd',
              'format' => 'raw',
              'filter' => $dnamelist,//Выдаёт выпадающий список с названиями
              //надо как-то сделать строку типа 'Все',
              'value' => function($model1) { return $model1->getdname();  }
       ....
При таком коде всё работает, но верхняя строка, которая означает *без фильтра* получается пустая, как её переименовать и сделать строку типа 'Все' ?
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Колонка 'все' в GridView, при выпадабщем списке

Сообщение Loveorigami »

Добавьте в начало $dnamelist ['0'=>'Все'].

Правильнее

[
'attribute' => 'attribute_name',
'value' => 'attribute_value',
'filter' => Html::activeDropDownList($searchModel, 'attribute_name', ArrayHelper::map(ModelName::find()->asArray()->all(), 'ID', 'Name'),['class'=>'form-control','prompt' => 'Все']),
],
Rabijko
Сообщения: 22
Зарегистрирован: 2018.04.19, 14:59

Re: Колонка 'все' в GridView, при выпадабщем списке

Сообщение Rabijko »

Loveorigami писал(а): 2018.05.22, 21:41 Добавьте в начало $dnamelist ['0'=>'Все'].

Правильнее

Код: Выделить всё

[
    'attribute' => 'attribute_name',    'value' => 'attribute_value',
    'filter' => Html::activeDropDownList($searchModel, 'attribute_name', ArrayHelper::map(ModelName::find()->asArray()->all(), 'ID', 'Name'),['class'=>'form-control','prompt' => 'Все']),
], 
Это применил, получилось. Большое спасибо! Но на будущее, как вначале массива добавить ['0'=>'Все'] ? В конец понятно, а в начало? :?
Rabijko
Сообщения: 22
Зарегистрирован: 2018.04.19, 14:59

Re: Колонка 'все' в GridView, при выпадабщем списке

Сообщение Rabijko »

Ещё в другой колонке сделано так:

Код: Выделить всё

 ... 'filter'=>  
                    [ '' => 'Все',
                     '1' => 'Первый',
                     '2' => 'Второй',   ], ...
Тут "Все" работает, но получается, что в новой сразу выводится в строке выбора слово "Все", а в этой есть и пустая строка и "Все"...не комильфо...можно как-то и тут добавить, чтобы тоже при заходе на страницу в строке выбора было слово "Все"?
Rabijko
Сообщения: 22
Зарегистрирован: 2018.04.19, 14:59

Re: Колонка 'все' в GridView, при выпадабщем списке

Сообщение Rabijko »

Rabijko писал(а): 2018.05.23, 08:59 Ещё в другой колонке сделано так:

Код: Выделить всё

 ... 'filter'=>  
                    [ '' => 'Все',
                     '1' => 'Первый',
                     '2' => 'Второй',   ], ...
Тут "Все" работает, но получается, что в новой сразу выводится в строке выбора слово "Все", а в этой есть и пустая строка и "Все"...не комильфо...можно как-то и тут добавить, чтобы тоже при заходе на страницу в строке выбора было слово "Все"?
Здесь сам разобрался...получилось так:

Код: Выделить всё

 ... 'filter'=>  Html::activeDropDownList( $searchModel, 'attribute_name',
                    [ //'' => 'Все',
                     '1' => 'Первый',
                     '2' => 'Второй',   ],  ['class'=>'form-control', 'prompt' => 'Все']
                    ), 
                    ...
Ответить