Gridview не работает с Multiselect

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

Gridview не работает с Multiselect

Сообщение garytopor » 2018.07.12, 15:43

Привет Всем!

Надо добавить MultiSelect(dosamigos\multiselect\MultiSelect или kartik\widgets\Select2) в Gridview(kartik\grid\GridView).
Проблема такая - Не убирается последний параметр. То есть если по одному анчекить опшыны они снимаются кроме последней. Думаю проблема в pushState , потому что параметры по одному снимаются с УРЛ за исключением последнего.

Модель:

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

	if ($this->multi_diet_param_id != null && count ($this->multi_diet_param_id)>0) {
            $query->andFilterWhere( ['in', 'diet_id', $this->multi_diet_param_id ]);
        }



Вьюха:

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


$form = ActiveForm::begin();
$panelBeforeTemplate = '
    <div class="pull-right"><div class="btn-toolbar kv-grid-toolbar" role="toolbar">
            {toolbar}
        </div>    
    </div>
    {before}
    <div class="custom-grid-filter" style="width:85%">
    <div style="width:15%;margin-left: 10px;" data-pjax="false">'.

        $form->field($searchModel, 'multi_diet_param_id')->widget(Select2::class, [
            'data' => $offerList,
            'options' => [
                'placeholder' => 'Eingetragen durch...',
                'multiple' => true
            ],
            'pluginOptions' => [
                'allowClear' => true,
            ],
        ]) .' </div>
    
        </div>
    <div class="clearfix"></div>
    ';
ActiveForm::end();

echo GridView::widget([
    'id' => 'restaurant',
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'instructionRef' => 'manage-restaurant',
    'noteKey' => $noteKey,
    'panelBeforeTemplate' => $panelBeforeTemplate,
    'formatter' => [
        'class' => Formatter::class,
        'nullDisplay' => '',
    ],
    'filterSelector' =>
        ", #" . Html::getInputId($searchModel, 'multi_diet_param_id')
    ,

    'actionButtons' => [
        [
            'text' => RestaurantBModule::t('app', 'Create a restaurant'),
            'url' => [
                'create'
            ],
            'visible' => Yii::$app->user->can(RestaurantBModule::ROLE_RESTAURANT_IMPROVER)
        ]
    ],
    'columns' => $columnsConfig,
]) 
Спасибо за любую информацию!
Последний раз редактировалось garytopor 2018.07.14, 08:00, всего редактировалось 3 раза.

Alex@
Сообщения: 557
Зарегистрирован: 2014.12.16, 09:24

Re: Gridview не работает с Multiselect

Сообщение Alex@ » 2018.07.12, 15:58

а что именно не работает???
я бы изменил условие

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

if ($this->multi_diet_param_id) {
            $query->andFilterWhere( ['in', 'diet_id', $this->multi_diet_param_id ]);
        }
на

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

if (!is_null($this->multi_diet_param_id)) {
            $query->andFilterWhere(['diet_id' => $this->multi_diet_param_id]);
        }
и ещё как предложение почему бы не написать свой обработчик для multi_diet_param_id???

garytopor
Сообщения: 105
Зарегистрирован: 2014.07.21, 22:23

Re: Gridview не работает с Multiselect

Сообщение garytopor » 2018.07.12, 16:04

Alex@ писал(а):
2018.07.12, 15:58
а что именно не работает???
я бы изменил условие

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

if ($this->multi_diet_param_id) {
            $query->andFilterWhere( ['in', 'diet_id', $this->multi_diet_param_id ]);
        }
на

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

if (!is_null($this->multi_diet_param_id)) {
            $query->andFilterWhere(['diet_id' => $this->multi_diet_param_id]);
        }
и ещё как предложение почему бы не написать свой обработчик для multi_diet_param_id???
Дело не в этом, дело во вьюхе, я об этом: https://github.com/kartik-v/yii2-widget ... issues/145


garytopor
Сообщения: 105
Зарегистрирован: 2014.07.21, 22:23

Re: Gridview не работает с Multiselect

Сообщение garytopor » 2018.07.16, 09:22

Вопрос закрыт. Правильный пример здесь : http://demos.krajee.com/grid-demo

Ответить