A data dictionary for Pimcore

Installs: 2 622

Dependents: 1

Suggesters: 0

Security: 0

Stars: 7

Watchers: 12

Forks: 3

Open Issues: 0


v0.0.8 2019-10-14 18:21 UTC


Creates a diagram of the current datamodel inside Pimcore.



Install the bundle with composer, go to the directory of the project and run the following command:

COMPOSER_MEMORY_LIMIT=3G composer require youwe/data-dictionary

And then enable the bundle:

./bin/console pimcore:bundle:install DataDictionaryBundle

And youre done!

First interface: Visitor

Nice, so the next step is to create a class that implements the interface:

namespace DataDictionaryBundle\Graph\Interfaces;

interface Visitor
    public function setFieldDefinition($object);

    public function setClassDefinition(\Pimcore\Model\DataObject\ClassDefinition $object);

    public function setGraph(Graph $graph);

    public function getGraph():Graph;

    public function visit();

In this class you will be able to change the graph that you will receive through the setGraph method. Before calling the visit method, the data dictionary will provide the field definition (setFieldDefinition), the class definition (setClassDefinition) and the graph.

We encourage you to implement those in separated class, and not in your main DataType class.

You can also extend the class


That implements all the methods from the interface except the method visit, you will have in this class the following properties:

    protected $graph;
    protected $fieldDefinition;
    protected $classDefinition;

Second interface: DataDictionary

After you implement your visitor class, you will have to indicate how to load it, so you will have to implement an interface that will give us a method to recover your class.

namespace DataDictionaryBundle\Interfaces;

use DataDictionaryBundle\Graph\Interfaces\Visitor;

interface DataDictionary
    public static function getVisitor(string $className = null):Visitor;

    public static function canVisit(string $className):bool;

The method getVisitor receive as parameter the class name of the field definition that should be visited by the data dictionary.

Edit the services.yml to enable it

In the services.yml file you should add:

    datadictionary.defaultclass: #some identifier
        class: DataDictionaryBundle\Graph\Visitor\Factory\DefaultClass #the class that implements the DataDictionary interface
        public: true
        autowiring: true
        autoconfigure: true
        tags: ['datadictionary'] #and this tag will allow us to load your class automaticaly


You can get the data dictionary by going to the setting (gear icon) -> Show Current Data Dictionary. Then a new tab wil be opened with the data dictionary.

Or you can get the data dictionary directly going to the following URL: http:///admin/data-dictionary/

Remember to change the localhost to your own pimcore host name.


  • Create a diagram with all the classes, attributes and relations;
    • Classes;
    • Attributes;
    • Relations (basic);
    • Create specific elements for specific cases:
      • Localized fields;
      • Object Bridge
      • Bricks
      • Block;
      • Field collection;
      • Tables;
      • Classificationstore
  • Generate textual documentation;
    • Create links between the diagram and the documentation;