Reference Store

The reference-store is a service which collects ids of entities/documents which are used to render a page. This ids will be used for example in the caching component HttpCacheBundle.

Architecture

Each type of content register its own service which implements ReferenceStoreInterface or with the default implementation Sulu\Bundle\ContentBundle\ReferenceStore\ReferenceStore.

The service sulu_website.reference_store_pool collects the services with the tag sulu_website.reference_store and use the alias attribute to identify them.

To register a loaded entity use the concrete store (e.g. sulu_content.reference_store.content or your own service) and call the method add to append the id of the entity.

Example

<service id="app.reference_store.example"
         class="Sulu\Bundle\WebsiteBundle\ReferenceStore\ReferenceStore">
    <tag name="sulu_website.reference_store" alias="example"/>
</service>
$exampleReferenceStore = $container->get('app.reference_store.example');
$exampleReferenceStore->add(1);

$referenceStore = $container->get('sulu_website.reference_store');
var_dump($referenceStore->getStore('example')->getAll());

// prints
// array(1) {
//   [0] =>
//   int(1)
// }