Я использую поисковый плагин CakeDC. У меня есть простая корзина с продуктами, которые относятся исключительно к подкатегориям. например, подкатегориями продуктов питания могут быть фрукты, овощи, мясо и т. д., поэтому груша относится только к категории фруктов.
Итак, у меня есть раскрывающийся список со всеми категориями, если я выберу еду из родительской категории, ничего не появится, если я выберу фрукты, то фрукты появятся.
Поведение, которое я хочу, состоит в том, чтобы сначала показывать только родительские категории, поэтому еда, спортивные товары и т. д., а затем, когда они выбирают еду, я хочу, чтобы произошло несколько разных вещей:
1) показать все продукты, связанные с этой категорией, а также все дочерние категории
2) отобразить еще один раскрывающийся список с фруктами, овощами, мясом и т. д. для дальнейшей фильтрации
3) если в этой подкатегории есть подкатегории, показывать и их дочерние элементы, пока не будет отфильтровано больше.
Мой код прямо сейчас позволяет мне находить только прямые ассоциации с категорией
Вот код моей модели Product.php
public $actsAs = array('Search.Searchable');
public $filterArgs = array(
array('name' => 'cid', 'field' => 'category_id', 'type' => 'value', 'method' => 'query', 'method' => 'query', 'allowEmpty' => true);
public function filterCat($data, $field = null) {
if (empty($data['cid'])) {
return array();
}
$cat = $data['cid'];
return array(
'OR' => array(
$this->alias . '.category_id' => $cat,
));
}
Я искал повсюду решение, которое, как мне кажется, было бы простым, но ничего не нашел. Любая помощь высоко ценится!