<?php declare(strict_types=1);
namespace MoorlForms\Core\Content\Form\Cms;
use MoorlForms\Core\Service\FbService;
use MoorlForms\MoorlForms;
use Shopware\Core\Content\Cms\Aggregate\CmsSlot\CmsSlotEntity;
use Shopware\Core\Content\Cms\DataResolver\CriteriaCollection;
use Shopware\Core\Content\Cms\DataResolver\Element\AbstractCmsElementResolver;
use Shopware\Core\Content\Cms\DataResolver\Element\ElementDataCollection;
use Shopware\Core\Content\Cms\DataResolver\ResolverContext\EntityResolverContext;
use Shopware\Core\Content\Cms\DataResolver\ResolverContext\ResolverContext;
class FbFormCmsElementResolver extends AbstractCmsElementResolver
{
protected FbService $fbService;
public function __construct(FbService $fbService)
{
$this->fbService = $fbService;
}
public function getType(): string
{
return 'moorl-fb-form';
}
public function collect(CmsSlotEntity $slot, ResolverContext $resolverContext): ?CriteriaCollection
{
return null;
}
public function enrich(CmsSlotEntity $slot, ResolverContext $resolverContext, ElementDataCollection $result): void
{
$config = $slot->getFieldConfig()->get('form');
if ($config === null) {
return;
}
$form = $this->fbService->initForm($config->getValue(), $resolverContext->getSalesChannelContext());
if ($form) {
$slot->setData($form);
if ($resolverContext instanceof EntityResolverContext) {
$form->setHiddenFields([
MoorlForms::ENTITY_NAME_KEY => $resolverContext->getDefinition()->getEntityName(),
MoorlForms::ENTITY_ID_KEY => $resolverContext->getEntity()->getUniqueIdentifier()
]);
}
}
}
}