#filter #yii #yii-extensions #cgridview #yii1.x
#Фильтр #yii #yii-расширения #cgridview #yii1.x
Вопрос:
Я хотел бы удалить пустую или первую опцию значения данных списка. У меня есть 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',
),
),
));
Ответ №1:
По умолчанию фильтры для 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();
// ...
Комментарии:
1. Решена проблема. Спасибо you.-@rob006
Ответ №2:
вы можете установить условие в dataProvider, чтобы оно возвращало вам результат всех ненулевых значений.например, $dataProvider-> criterions-> addCondition(‘fruit_id НЕ равен НУЛЮ’); Я надеюсь, что это сработает!