vendor/store.shopware.com/huebertseofaq/src/DataResolver/HuebFaqCmsElementResolver.php line 50

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Huebert\SeoFaq\DataResolver;
  3. use Huebert\SeoFaq\Core\Content\SeoFaqGroup\SeoFaqGroupDefinition;
  4. use Huebert\SeoFaq\Core\Content\SeoFaqGroup\SeoFaqGroupEntity;
  5. use Huebert\SeoFaq\Core\Content\SeoFaqQuestions\SeoFaqQuestionsDefinition;
  6. use Huebert\SeoFaq\Core\Content\SeoFaqQuestions\SeoFaqQuestionsEntity;
  7. use Shopware\Core\Content\Cms\Aggregate\CmsSlot\CmsSlotEntity;
  8. use Shopware\Core\Content\Cms\DataResolver\Element\AbstractCmsElementResolver;
  9. use Shopware\Core\Content\Cms\DataResolver\Element\ElementDataCollection;
  10. use Shopware\Core\Content\Cms\DataResolver\ResolverContext\ResolverContext;
  11. use Shopware\Core\Content\Cms\DataResolver\CriteriaCollection;
  12. use Shopware\Core\Framework\Context;
  13. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  14. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  15. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  16. class HuebFaqCmsElementResolver extends AbstractCmsElementResolver
  17. {
  18.     private $seoFaqQuestionsRepository;
  19.     public function __construct(
  20.         EntityRepositoryInterface $seoFaqQuestionsRepository
  21.     ){
  22.         $this->seoFaqQuestionsRepository $seoFaqQuestionsRepository;
  23.     }
  24.     public function getType(): string
  25.     {
  26.         return 'hueb-faq-element';
  27.     }
  28.     public function collect(CmsSlotEntity $slotResolverContext $resolverContext): ?CriteriaCollection
  29.     {
  30.         $collection = new CriteriaCollection();
  31.         $groupId $slot->getConfig()['group']['value'];
  32.         $groupCriteria = new Criteria([$groupId]);
  33.         $faqCriteria = (new Criteria())
  34.         ->addFilter(new EqualsFilter('group'$groupId));
  35.         $collection->add('faqGroup'SeoFaqGroupDefinition::class, $groupCriteria);
  36.         $collection->add('faqQuestions'SeoFaqQuestionsDefinition::class, $faqCriteria);
  37.         return $collection;
  38.     }
  39.     public function enrich(CmsSlotEntity $slotResolverContext $resolverContextElementDataCollection $result): void
  40.     {
  41.         $slot->assign([
  42.             'faqs' => $result->get('faqQuestions')->getElements(),
  43.             'group' => $result->get('faqGroup')->first()
  44.         ]);
  45.     }
  46. }