Ajax Фильтр

Всем добрый вечер. Подскажите пожалуйста реализацию фильтра на ajax, т.е. к примеру у нас на странице есть поле выбора города, цены(от стольки то и до стольки) и т.д. Когда нажимаем на кнопку, делаем выборку из БД по этим параметрам, то что сейчас есть и оно не работает :(

В конроллере:




public function actionIndex()

{

 $model = new Ads('search');

 

 // Сбрасываются поля

 $model->unsetAttributes();


        // Вставляются передаваемые по ajax или без параметры из полей

		if(isset($_POST['Ads'])) {

			$model->attributes= $_POST['Ads'];

		}

			


        // Заполненная переданными данными модель передаётся в грид

		$this->render('index',array(

			'model'=>$model,

			));

}



И в представлении /ads/index.php




///Форма

<?php $form=$this->beginWidget('CActiveForm', array(

			'id'=>'ads-search-form',

			'enableAjaxValidation'=>false,

			)); 

			$model = new Ads;

			?>


			

			<p>

			<?php echo $form->textField($model,'search_text'); ?>

			<?php echo $form->dropDownList($model, 'cat_id', CHtml::listData(Adscat::model()->findAll(),'id','name'), array('empty'=>'Выберите категорию'));?>

			<?php echo $form->dropDownList($model, 'place_id', CHtml::listData(Place::model()->findAll(),'id','name'), array('empty'=>'Выберите город'));?>

			Только с фото <?php echo $form->checkBox($model,'has_foto'); ?>

			</p>

			<p>

			Цена от <?php echo $form->textField($model,'price_min'); ?> до <?php echo $form->textField($model,'price_max'); ?>

			<?php echo CHtml::ajaxSubmitButton('Submit', '/ads', array(

    			'type' => 'POST',

    			'update' => '.ads-catalog',

				),

				array(

   				'type' => 'submit'

			)); ?>

			</p>

			<?php $this->endWidget(); ?>


///CListView

<?php $this->widget('zii.widgets.CListView', array(

				'dataProvider' => $model->search(),

				'itemView' => '_view',

				'summaryText' => false,

				'cssFile'=>false,

				'ajaxUpdate'=>true,

				'pagerCssClass' => 'pagination',

				'pager' => array(

					'cssFile'=>false,

					'header' => 'Страницы',

					'prevPageLabel' => '',

					'nextPageLabel' => '',

					'firstPageLabel' => '',

					'lastPageLabel' => '',

					),

				'updateSelector'=>'#yw0 .sort a',

				'enableSorting' => true,

				'sorterHeader' => 'Сортировать по:',

				'sorterCssClass' => 'sort small',

				'sortableAttributes' => array(

					'name' => 'алфавиту',

					'price' => 'стоимости',

					)

					)); ?>



В заголовках параметры передаются вроде, но выводятся все поля с БД независимо от переданных параметров :(

Один косяк нашел :)




///Форма

<?php $form=$this->beginWidget('CActiveForm', array(

                        'id'=>'ads-search-form',

                        'enableAjaxValidation'=>false,

                        )); 

                       // $model = new Ads; Вот это явно здесь лишнее...

                        ?>


                        

                        <p>

                        <?php echo $form->textField($model,'search_text'); ?>

                        <?php echo $form->dropDownList($model, 'cat_id', CHtml::listData(Adscat::model()->findAll(),'id','name'), array('empty'=>'Выберите категорию'));?>

                        <?php echo $form->dropDownList($model, 'place_id', CHtml::listData(Place::model()->findAll(),'id','name'), array('empty'=>'Выберите город'));?>

                        Только с фото <?php echo $form->checkBox($model,'has_foto'); ?>

                        </p>

                        <p>

                        Цена от <?php echo $form->textField($model,'price_min'); ?> до <?php echo $form->textField($model,'price_max'); ?>

                        <?php echo CHtml::ajaxSubmitButton('Submit', '/ads', array(

                        'type' => 'POST',

                        'update' => '.ads-catalog',

                                ),

                                array(

                                'type' => 'submit'

                        )); ?>

                        </p>



Почти сделал. Подскажите пожалуйста почему запись такого вида:




 $criteria->addBetweenCondition('price', $price_min, $price_max);



Работает только при условии, если задан $price_min и $price_max, т.е. к примеру если задать $price_min, а $price_max не задать и наоборот то ничего не работает, если же оба значения заданы то все ок :unsure:

addBetweenCondition

Гляньте в код метода, в самом его начале идет проверка, заданы ли оба параметра, и если один не задан, дальнейший код не выполняется.

Спасибо, разобрался :)