2016-07-25 81 views
0

我正在试图对某种可选依赖关系的教义orm。 根据配置的不同,我希望将“doctrine.orm.entity_manager”与setter注入注入alsatian_form.form_event_subscriber.extensible服务。如何添加setter注入注入捆绑扩展中的服务

<?php 

use Symfony\Component\HttpKernel\DependencyInjection\Extension; 

class AlsatianFormExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     $configuration = new Configuration(); 
     $configFormBundle = $this->processConfiguration($configuration, $configs); 
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); 
     $loader->load('services.yml'); 


     if($configFormBundle['extensible_entity']['enabled']){ 
      $definition = $container->getDefinition('alsatian_form.form_type.extensible_entity'); 
      $definition->setPublic(true); 
      $definition->addTag('form.type'); 

      $container->getDefinition('alsatian_form.form_event_subscriber.extensible') 
       ->addMethodCall('setEntityManager', array("@doctrine.orm.entity_manager")); // <- here I tried with the same syntax as in YAML configuration files. 
     } 
    } 
} 

我认为它必须是一个语法问题,因为我收到了字符串“@ doctrine.orm.entity_manager”,而不是实体管理器...

回答

0

就找到了答案here

use Symfony\Component\DependencyInjection\Reference; 

container->getDefinition('alsatian_form.form_event_subscriber.extensible') 
       ->addMethodCall('setEntityManager', array(new Reference("doctrine.orm.entity_manager"))); 

我希望它可以帮助某人。