kentuck1213
@kentuck1213

Как решить поставленную задачу?

Привет тостер!.
У меня есть 3 поля для поиска данных
thumb.png
И два типа поиска данных первый это инпут куда пользователь может вписать название района сам, либо выбрать в существующий селектах.
Все пашет данные выводит. Но есть такой баг когда пользователь выберет город но не выберет район и потом нажмёт поиск то выведутся все районы всех городов а их куча. Должно быть, выбрал город вылезли все районы этого города.
Мне подсказали если пустое поле то в criteria задавай не существующий параметр
public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.
		$criteria=new CDbCriteria;
		$criteria->compare('id',$this->id);
		$criteria->compare('district_id',$this->district_id);
		$criteria->compare('name_ru',$this->name_ru,true);
		$criteria->compare('name_en',$this->name_en,true);
		$criteria->compare('address_ru',$this->address_ru,true);
		$criteria->compare('address_en',$this->address_en,true);
		$criteria->compare('sort',$this->sort);
		$criteria->compare('active',$this->active);
		if(intval(Yii::app()->request->getParam('RefMahala',['district_id'=>null])['district_id']) <= null){  // проверка если пустой option в теге select 
			$criteria->compare('active', 4);   // то я задаю не существующий параметр что вернет : нет результатов 
		};
		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}

Проверка работает на ура! но если пользователь захочет вести сам название района и потом нажмёт поиск, то будут отправлены два $_POST - а 1 - это инпут 2 -селект с пустым option, если отправится пустой оптион сработает вот эта проверка
if(intval(Yii::app()->request->getParam('RefMahala',['district_id'=>null])['district_id']) <= null){
$criteria->compare('active', 4);
};
и выдаст нет результатов.
Вроде подробнее описал проблему, поможете решить ?
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
kentuck1213
@kentuck1213 Автор вопроса
решил :D
if($_POST['RefMahala']['name_ru'] && $_POST['RefMahala']['district_id'] == null){
$criteria->compare('active',$this->active);
} else if (!$_POST['RefMahala']['name_ru'] && $_POST['RefMahala']['district_id'] == null){
$criteria->compare('active', 4);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы