*/
public function getCascadeFilters(?string $category = null, ?string $subcategory = null): array
{
- $cacheKey = 'pm_cascade_filters_v2_' . md5((string)$category . '|' . (string)$subcategory);
+ $cacheKey = 'pm_cascade_filters_' . md5((string)$category . '|' . (string)$subcategory);
- return Yii::$app->cache->getOrSet($cacheKey, function () use ($category, $subcategory) {
+ $data = Yii::$app->cache->getOrSet($cacheKey, function () use ($category, $subcategory) {
$categories = (new Query())
->select('category')
->from('products_1c_nomenclature')
->where(['IS NOT', 'category', null])
->andWhere(['!=', 'category', ''])
- ->andWhere(['not in', 'category', self::EXCLUDED_CATEGORIES])
->distinct()
->orderBy('category')
->column();
return compact('categories', 'subcategories', 'species');
}, self::CACHE_DURATION);
+
+ // Фильтруем исключённые категории уже после кэша — работает даже с устаревшим кэшем
+ $data['categories'] = array_values(array_filter(
+ $data['categories'],
+ static fn(string $cat): bool => !in_array($cat, self::EXCLUDED_CATEGORIES, true)
+ ));
+
+ return $data;
}
/**