Как использовать раскрывающийся список Select2 в фильтре Gridview (окно поиска). Вот код, который я пытаюсь использовать (я использую 2 объединенные таблицы) - PullRequest
1 голос
/ 23 декабря 2019

Я хочу изменить встроенный фильтр окна поиска в Gridview с помощью кнопки Select2 (выпадающая кнопка, которая позволяет пользователю написать опцию вручную). Я использую две объединенные таблицы, и «wp_id» - это столбец в обеих таблицах, а «user_id» - это столбец в таблице «Счета». С помощью кода, использованного здесь, я получаю на своей сетке простой текстовый ввод встроенного

<?php echo GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            [
                'attribute' => 'wp_id',
                'value' => 'accounts.user_id',
                'filter' => $form->field($searchModel, 'wp_id')
                    ->widget(
                        Select2::className(),
                        [
                            'data' => ArrayHelper::map(Accounts::find()->all(), 'wp_id', 'user_id'),
                            'options' => ['placeholder' => ' --Filter by user id-- '],
                            'language' => 'en',
                            'pluginOptions' => [
                                'allowClear' => true,
                            ],
                        ]),
            ],
        ],
]
) ?>

Что мне здесь не хватает?

1 Ответ

1 голос
/ 23 декабря 2019

Поскольку здесь нет никаких $form, которые вы пытаетесь использовать, вы должны инициализировать select2 напрямую с помощью виджета и указать свойства attribute и model виджета select2.

Смотрите ниже, как должен выглядеть ваш код.

<?php

    echo GridView::widget(
        [
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                [
                    'attribute' => 'wp_id',
                    'value' => 'accounts.user_id',
                    'filter' => Select2::widget(
                        [
                            'model' => $searchModel,
                            'attribute' => 'wp_id',
                            'data' => ArrayHelper::map(Accounts::find()->all(), 'wp_id', 'user_id'),
                            'options' => ['placeholder' => ' --Filter by user id-- '],
                            'language' => 'en',
                            'pluginOptions' => [
                                'allowClear' => true,
                            ],
                        ]
                    ),
                ],
            ],
        ]
);
...