定制学说保湿仪作为符号服务



i确实在以下教程以进行自定义水合。https://techpunch.co.uk/development/create-custom-doctrine2-hydrator-symfony2

我对此不满意。我不希望我的捆绑包的用户需要在其中配置水合物config.yml。

是否可以将其添加为服务并将其标记为例如。

<service id="bundle.hydration.custom" class="YourBundleHydratorsListHydrator">
    <argument type="service" id="helper_service" />
    <tag name="doctrine.hydrator" alias="ListHydrator" />
</service>

我还需要水合物中的其他服务,因此我需要将其注册为服务。

如果自定义水合物除了Entity Manager以外没有依赖关系,那么您可以在容器编译和注入类名称中获得"doctrine.orm% name% _configuration"的定义:

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

但是,如果水合物取决于其他服务,那是一个问题:学说实例化水合物本身:

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

所以,也许您需要创建一个自定义EntityManager并覆盖newHydrator()方法。

希望这会有所帮助。

相关内容

  • 没有找到相关文章