Persistence

1.3 version
Maintained Unmaintained

Persistence

The CoreBundle lets you to centrally configure the persistence layer for all CMF bundles.

To make the PHPCR-ODM the default persistence layer for all CMF bundles add the following to your main configuration file:

  • YAML
    1
    2
    3
    4
    # app/config/config.yml
    cmf_core:
        persistence:
            phpcr: ~
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    <!-- app/config/config.xml -->
    <?xml version="1.0" charset="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services">
    
        <config xmlns="http://cmf.symfony.com/schema/dic/core">
            <persistence>
                <phpcr />
            </persistence>
        </config>
    
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    // app/config/config.php
    $container->loadFromExtension('cmf_core', [
        'persistence' => [
            'phpcr' => [],
        ],
    ]);
    

Persisting Documents in Different Languages

Refer to the PHPCR-ODM documentation for details on persisting documents in different languages.

Choosing a Global Translation Strategy

PHPCR-ODM supports multiple different strategies for persisting translations in the repository. When combining Bundles its possible that one ends up with a mix of different strategies which can make providing a generic search across this data more complicated and might also be less efficient depending on the number of different languages used in the system.

For this purpose the CoreBundle provides a Doctrine listener that can optionally enforce a single translation strategy for all documents:

  • YAML
    1
    2
    3
    4
    5
    # app/config/config.yml
    cmf_core:
        persistence:
            phpcr:
                translation_strategy: attribute
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    <!-- app/config/config.xml -->
    <?xml version="1.0" charset="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services">
    
        <config xmlns="http://cmf.symfony.com/schema/dic/core">
            <persistence>
                <phpcr translation-strategy="attribute"/>
            </persistence>
        </config>
    
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    // app/config/config.php
    $container->loadFromExtension('cmf_core', [
        'persistence' => [
            'phpcr' => [
                'translation_strategy' => 'attribute',
            ],
        ],
    ]);
    

Caution

Changing this setting when data was already persisted with a different translation strategy will require manually updating the current data to match that of the chosen translation strategy.

See the PHPCR-ODM documentation for more information.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.