Hola a todos, he desarrollado un módulo con searchCritería que busca entre las categorías, pero solo encuentra en las subcategorías si le digo que solo muestre las categorías padre, muestra la cantidad de productos, pero no muestra ningún resultado.
Si le cambio el nivel a subcategorías si encuentra.
Conocéis el motivo de porque no muestra productos del padre pero si de las hijas .
Gracias!!
Hola @mnuhell,
Sin ver o probar el código es medio difícil pero ¿quizás es que los productos están asociados a las categorías hijas solamente y al ser anchor te las contabiliza en la categoría padre?
Hola @Damian Culotta
Realmente es un foreach que recorre todas las categorias y solo muestra las padre, en ellas cuenta en total de todos los productos, que hay en sus subcategorías.
Luego creo una método que captura lo que se ha elegido en el select y con un método muy parecido al que tienes en tu totorial de searchcritería, devuelvo los items de la selección, cuando eliges una subcategoría si que muestra los resultados, pero ahora solo se muestran las categorías padre por lo que no muestra ningún resultado.
Aquí lo puedes probar http://obs.webioss.com/
Habría que añadir todos los productos de las subcategorías a la categoría padre?
public function getProducts() { $filterPrice = $this->filterBuilder ->setField('price') ->setConditionType('lt') ->setValue($this->getPriceSearch()) ->create(); $filterCategory = $this->filterBuilder ->setField('category_id') ->setConditionType('eq') ->setValue($this->getCategorySearch()) ->create(); $filterGroupType = $this->filterGroup; $filterGroupPrice = clone $filterGroupType; $filterGroupCategory = clone $filterGroupType; $filterGroupPrice->setFilters([$filterPrice]); $filterGroupCategory->setFilters([$filterCategory]); $searchCriteria = $this->searchCriteriaBuilder->setFilterGroups([$filterGroupPrice, $filterGroupCategory]); $searchResults = $this->productRepository->getList($searchCriteria->create()); $products = $searchResults->getItems(); return $products; }
Un saludo!!
Hola @Damian Culotta
Tengo una duda con el setConditionType "from" and "to" a ver si sabes como lo gestiona Magento.
Tengo este filtro o me gustaría tener este filtro y lo tengo así.
$filterPrice = $this->filterBuilder ->setField('price') ->setConditionType("from", $minPrice) ->setConditionType("to", $maxPrice) ->setValue($minPrice) ->setValue($maxPrice) ->create();
Pero cuando me devuelve los productos solo hace la última condición en este caso el "to",
object(Magento\Framework\Api\Filter)#2293 (1) { ["_data":protected]=> array(3) { ["field"]=> string(5) "price" ["condition_type"]=> string(2) "to" ["value"]=> string(4) "2.99" } }
he probado hacerlo con dos filtros, pero los productos que muestra no son los correctos, ya que si le digo que sea entre 4.00€ y 10.00€ me muestra productos con un precio de 0.33€.
Gracias!!