Yii2 GridView как отображать столбец только тогда, когда активен какой-либо фильтр

#gridview #filter #yii2 #jquery-ui-sortable

#gridview #Фильтр #yii2 #jquery-ui-сортируемый

Вопрос:

У меня есть Yii2 GridView с реализованной опцией сортировки (я использовал расширение kotchuprik), которое добавляет один столбец с возможностью перетаскивания. Проблема в том, что мне нужно иметь возможность сортировать строки, когда установлен какой-либо идентификатор фильтра GridView. В GridView есть столбец «Идентификатор машины», и сортировку нужно выполнять только со строками с одинаковым «Идентификатором машины», так как отобразить столбец с возможностью перетаскивания только тогда, когда какой-либо идентификатор машины задан фильтром столбца??

Ответ №1:

Вы могли бы использовать свойство visible столбца

Yii grid DataColumn имеет свойство visible . Этот атрибут принимает логические значения, но вы можете динамически использовать выражение, которое имеет логическое значение. например:

   use Yii;

  ...

          'columns' => [
              ['class' => 'yiigridSerialColumn'],
              //'tipo',
              ['attribute' => 'your_attribute',    
                  'label' => 'Your Label', 
                  'visible' => isThisColumnVisible(),

              ],  
  

http://www.yiiframework.com/doc-2.0/yii-grid-column.html #$видимый-деталь

Вы можете проверить $SearchModel->your_attribute или эквивалентную функцию, которая возвращает логическое значение

           'columns' => [
              ['class' => 'yiigridSerialColumn'],
              //'tipo',
              ['attribute' => 'your_attribute',    
                  'label' => 'Your Label', 
                  'visible' => isset($searchModel->your_attribute) ,

              ],  
  

Комментарии:

1. Спасибо, но как проверить, активен ли фильтр (что-то было выбрано из выпадающего фильтра)?

2. что вы имеете в виду под «если фильтр активен»?

3. Активный означает, что что-то было выбрано из фильтра выпадающего списка (и данные были обновлены, включая этот фильтр)