Опитах се да внедря филтриране на данни (списък на базата на избрана категория), използвайки падащо меню с наблюдателно поле и 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'));
}
Филтърът работи както исках, но проблемът е, че когато избера празна стойност („Филтър по категория), той все още помни последната сесия на категория, така че не мога да се върна към списъка по подразбиране (списък с всички записи без филтър).
Опитах се да поставя някакви условия, но пак не успях. Има ли друг начин? Моля, оценявам вашата помощ. благодаря
хермаван