2016-11-23 3 views
1

Ich habe folgende Tutorial für benutzerdefinierte Hydration. https://techpunch.co.uk/development/create-custom-doctrine2-hydrator-symfony2Benutzerdefinierte Lehre Hydrator als Symfony Service

Worüber ich nicht glücklich bin. Ich will nicht, dass der Benutzer meines Bündels den Hydrator dort config.yml konfigurieren muss.

Ist es möglich, es als Dienst hinzuzufügen und es z.

Auch ich brauche andere Dienstleistungen in meinem Hydrator, also muss ich es als Dienst registrieren.

Antwort

1

Wenn benutzerdefinierte Hydrator keine Abhängigkeiten neben Entity Manager hat, dann können Sie die Definition von "doctrine.orm% name% _configuration" während Container Zusammenstellung erhalten und Klassennamen injizieren:

$container 
    ->getDefinition('doctrine.orm.some_configuration') // replace "some" by your entity manager name 
    ->addMethodCall('addCustomHydrationMode', [ 
     'custom_custom', 'SomeCustomHydratorClass' 
    ]); 

Aber wenn Hydrator auf andere Dienstleistungen abhängt, ist es ein Problem: Lehre instanziiert ein hydrators selbst:

// Doctrine\ORM\EntityManager::newHydrator($hydrationMode) 

if (($class = $this->config->getCustomHydrationMode($hydrationMode)) !== null) { 
    return new $class($this); 
} 

Also, vielleicht müssen Sie create a custom EntityManager und außer Kraft setzen newHydrator() Methode.

Hoffe, das hilft.

+0

Vielen Dank! Aber denke dann, ich muss einen anderen Weg gehen, ein benutzerdefinierter Entity Manager ist nicht das, worauf ich mich verlassen will. –