我试着在几天内获取一个Collection类的元素的“名称”数组。我尝试了在Shopware 6中使用的所有可能的方法,但仍然无法在Subscriber中获得它:
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('Tags');
$criteria1->setIds($currentPropertyOption);
$tags = new TagCollection();
$options = $this->optionRepository->search($criteria1, $event->getContext())->getEntities();
foreach ($options as $option) {
$extension = $option->getExtension('myTags');
if (!$extension instanceof TagCollection) {
continue;
}
$tags->merge($extension);
}
$tagnames = $tags->getElements('myTags');
// doesn't work $tagnames = $options->getExtension('myTags')->get('names');
// doesn't work $tagnames = $options->getExtension('myTags')->getValues();
// etc..
// test $event->getContext()->addExtension('myTags1', $tags);
// test $event->getContext()->addExtension('myTagsNames1', new ArrayEntity($tagnames));
字符串
这里是myTags1扩展转储:
Shopware\Core\System\Tag\TagCollection {#8104 ▼
#elements: array:10 [▼
"49aa54d94e394bc2affb5b702d402e42" => Shopware\Core\System\Tag\TagEntity {#12939 ▶}
"551fcda8a25f47c990d7a795ef251508" => Shopware\Core\System\Tag\TagEntity {#12943 ▶}
"8c526404df194a88bf72073fea2fdabd" => Shopware\Core\System\Tag\TagEntity {#12947 ▼
#name: "Name1"
型
有谁知道,如何得到一个数组的名字也许?
1条答案
按热度按时间ac1kyiln1#
字符串