Чтобы удалить пустую опцию из фильтра в CgridView Filter -Yii1

Я хотел бы удалить пустую или первую опцию значения данных списка. У меня есть модель FruitList, и у нее есть список, поэтому мне нужно запретить пользователям выбирать все.

Но теперь проблема заключается в пустой опции, которая позволяет пользователю выбрать все фрукты, так как я могу удалить.

это мой код

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(

         array(
            'header' => 'Buyer',
            'name' => 'Buyer',
            'value' => 'customer_name',
            'filter' => $fruits
        ),
        array(
            'header' => 'Fruits',
            'name' => 'fruit_id',
            'value' => '$data->Buyers->FruitList->Name',
            'filter' => $fruits
        ),
        array(            
            'class'=>'CButtonColumn',
        ),
    ),
));

person ubm    schedule 02.04.2019    source источник


Ответы (2)


По умолчанию фильтры для CGridView отображают раскрывающийся список с пустой опцией, позволяющей отключить фильтрацию. Но вы можете переписать это поведение, предоставив свой собственный раскрывающийся список в качестве фильтра:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(

         array(
            'header' => 'Buyer',
            'name' => 'Buyer',
            'value' => 'customer_name',
            'filter' => CHtml::activeDropDownList($model, 'customer_name', $fruits),
        ),
        array(
            'header' => 'Fruits',
            'name' => 'fruit_id',
            'value' => '$data->Buyers->FruitList->Name',
            'filter' => CHtml::activeDropDownList($model, 'fruit_id', $fruits)
        ),
        array(            
            'class'=>'CButtonColumn',
        ),
    ),
));

Убедитесь, что вы установили значение по умолчанию для этих фильтров в своей модели — что-то вроде этого в вашем контроллере:

// ...
$model->fruit_id = FruitList::DEFAULT_ID;
$model->customer_name = FruitList::DEFAULT_ID;
if (isset($_GET['FruitList'])) {
    $model->setAttributes($_GET['FruitList']);
}
$dataProvider = $model->search();
// ...
person rob006    schedule 02.04.2019
comment
Проблема решена.Спасибо.-@rob006 - person ubm; 03.04.2019

вы можете установить условие в dataProvider, чтобы он возвращал вам результат всех ненулевых значений. Например, $dataProvider->criteria->addCondition('fruit_id IS NOT NULL '); Я надеюсь, что это работает!

person Viral Nakrani    schedule 02.04.2019