Skip to content

Commit

Permalink
add Extension System for StructureResolver
Browse files Browse the repository at this point in the history
  • Loading branch information
jmahlke committed Nov 11, 2021
1 parent aed0fca commit 0467aae
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
14 changes: 13 additions & 1 deletion Content/StructureResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

namespace Sulu\Bundle\HeadlessBundle\Content;

use Sulu\Bundle\HeadlessBundle\Content\StructureResolver\StructureResolverExtensionInterface;
use Sulu\Bundle\DocumentManagerBundle\Bridge\DocumentInspector;
use Sulu\Bundle\PageBundle\Document\BasePageDocument;
use Sulu\Bundle\PageBundle\Preview\PageRouteDefaultsProvider;
Expand Down Expand Up @@ -50,16 +51,23 @@ class StructureResolver implements StructureResolverInterface
*/
private $referenceStorePool;

/**
* @var StructureResolverExtensionInterface[]
*/
private iterable $structureResolverExtensions;

public function __construct(
ContentResolverInterface $contentResolver,
StructureManagerInterface $structureManager,
DocumentInspector $documentInspector,
ReferenceStorePoolInterface $referenceStorePool
ReferenceStorePoolInterface $referenceStorePool,
iterable $structureResolverExtensions
) {
$this->contentResolver = $contentResolver;
$this->structureManager = $structureManager;
$this->documentInspector = $documentInspector;
$this->referenceStorePool = $referenceStorePool;
$this->structureResolverExtensions = $structureResolverExtensions;
}

/**
Expand Down Expand Up @@ -95,6 +103,10 @@ public function resolve(
$data['view'][$property->getName()] = $contentView->getView();
}

foreach ($this->structureResolverExtensions as $structureResolverExtension) {
$data[$structureResolverExtension->getKey()] = $structureResolverExtension->resolve($requestedStructure, $locale);
}

return $data;
}

Expand Down
19 changes: 19 additions & 0 deletions Content/StructureResolver/StructureResolverExtensionInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);


namespace Sulu\Bundle\HeadlessBundle\Content\StructureResolver;


use Sulu\Component\Content\Compat\StructureInterface;

interface StructureResolverExtensionInterface
{
public function getKey(): string;

public function resolve(
StructureInterface $requestedStructure,
string $locale
): mixed;
}
2 changes: 2 additions & 0 deletions Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@
<argument type="service" id="sulu.content.structure_manager"/>
<argument type="service" id="sulu_document_manager.document_inspector"/>
<argument type="service" id="sulu_website.reference_store_pool"/>
<argument type="tagged_iterator" tag="sulu_headless.structure_resolver_extension"/>
</service>
<service id="Sulu\Bundle\HeadlessBundle\Content\StructureResolverInterface" alias="sulu_headless.structure_resolver"/>


<service
id="sulu_headless.content_resolver"
class="Sulu\Bundle\HeadlessBundle\Content\ContentResolver"
Expand Down

0 comments on commit 0467aae

Please sign in to comment.