Shopware 6.5.5.2升级至6.5.7.0后自定义筛选插件失效求助
Shopware 6.5.7.0升级后自定义属性联动筛选插件失效问题
问题背景
将Shopware从6.5.5.2版本升级至6.5.7.0后,一款实现属性联动筛选的自定义插件失效——该插件原本可根据已选属性过滤其他属性。目前关联的属性标签配置正常,但筛选功能无法按预期工作;禁用HTTP缓存也无效果。此外,重装插件时出现数据库表命名报错。
插件核心代码(Subscriber.php)
class Subscriber implements EventSubscriberInterface { private EntityRepository $optionRepository; public function __construct(EntityRepository $optionRepository) { $this->optionRepository = $optionRepository; } public static function getSubscribedEvents(): array { return [ ProductListingCriteriaEvent::class => [ ['onListingCriteria', -200], ], ]; } public function onListingCriteria(ProductListingCriteriaEvent $event): void { $event->getCriteria()->addAssociation('properties'); $event->getCriteria()->addAssociation('properties.group'); $criteria = $event->getCriteria(); $filters = $criteria->getExtension('filters'); if (!$filters instanceof FilterCollection) { return; } $propertyFilter = $filters->get('properties'); if (!$propertyFilter instanceof Filter || !\is_array($propertyFilter->getValues())) { return; } $currentPropertyOptions = $propertyFilter->getValues(); $event->getContext()->addExtension('currentPropertyOptionsCriteria', new ArrayEntity($currentPropertyOptions)); $criteria1 = new Criteria(); $criteria1->addAssociation('myTags'); $criteria1->setIds($currentPropertyOptions); $tags = new TagCollection(); $options = $this->optionRepository->search($criteria1, $event->getContext())->getEntities(); /** @var PropertyGroupOptionEntity $option */ foreach ($options as $option) { $extension = $option->getExtension('myTags'); if (!$extension instanceof TagCollection) { continue; } $tags->merge($extension); } $tags = $option->getExtension('myTags'); $tagnames = $tags->map(fn (TagEntity $tag) => $tag->getName()); $event->getContext()->addExtension('myTagsNames1', new ArrayEntity($tagnames)); $prefixes = ['84a5f522d04f463a93a858b3c1bb8f7a','40f24f88c4c34196ad21ec5dcd094e6a', 'e892c99ffc5747848aea3aa5c8126201', '96e839a6e32a4301b238e90088f4a778', 'c5d7bcee60f7493bb6203965e15068e0', '9c493945d37b4ff1b527a874d8315519', 'f032b2d21c484196ad3a98d90379f6c0', 'a07ec367574a4c3d81b7fb6ceae66ffe']; if (in_array('3f777000a2734deead391133cee3a6a9', $currentPropertyOptions)) { $multiFilter = new MultiFilter(MultiFilter::CONNECTION_OR); foreach ($tagnames as $tagname) { $multiFilter->addQuery(new PrefixFilter('product.properties.name', $tagname));} foreach ($prefixes as $prefix) { $multiFilter->addQuery(new EqualsFilter('product.properties.group.id', $prefix)); } $criteria->addFilter($multiFilter); } .. if (in_array('a637fe94fe794a84b0ce7fc2a13e1485', $currentPropertyOptions)) { $multiFilter = new MultiFilter(MultiFilter::CONNECTION_OR); foreach ($tagnames as $tagname) { $multiFilter->addQuery(new PrefixFilter('product.properties.name', $tagname));} foreach ($prefixes as $prefix) { $multiFilter->addQuery(new EqualsFilter('product.properties.group.id', $prefix)); } $criteria->addFilter($multiFilter); } } }
重装插件报错
Internal Server Error: Table "myfilter_property_group_option_tag" has to be prefixed with "custom_entity_ or ce_"
注:暂时可跳过数据库字段名称的更新
需求
- 针对当前插件筛选功能失效的调试建议
- Shopware 6.5.7.0或6.6版本中实现此类自定义属性联动筛选的新方法
内容的提问来源于stack exchange,提问作者Stacker1427
相关产品推荐
相关产品推荐

