Я пытался внедрить фильтрацию данных (список по выбранной категории), используя раскрывающийся список с поле наблюдения и пагинацией ajax. Я использую сессию, чтобы запомнить выбранную категорию, чтобы сохранить нумерацию страниц.
Вот мой код (Cakephp 1.2)
В поле зрения:
echo $form->select('Category.id', $categories, null, array('id' => 'categories'),'Filter by Categories')
echo $ajax->observeField('categories' ,array('url' =>'update_category','update' => 'collectionDiv'));
В контроллере:
if(!empty($this->data['Category']['id']))
{
$cat_id=$this->data['Category']['id'];
$filters=array('Collection.category_id' => $cat_id);
$this->set('collections', $this->paginate('Collection', $filters));
$this->Session->write($this->name.'.$cat_id', $category_id);
}
else
{
$cat_id=$this->Session->read($this->name.'.cat_id');
$filters=array('Collection.category_id' => $cat_id);
$this->set('collections', $this->paginate('Collection'));
}
Фильтр работает так, как я хотел, но проблема в том, что когда я выбираю пустое значение ('Фильтровать по категории), он все еще запоминает последний сеанс категории, поэтому я не могу вернуться к списку по умолчанию (Список всех записей без фильтра).
Я пытался сделать какое-то условие, но все еще не удалось. Есть ли другой способ? Пожалуйста, я ценю вашу помощь. спасибо
Хермаван