使用简单的Symfony 2容器构建器配置Doctrine 2

时间:2013-08-03 09:34:20

标签: symfony dependency-injection doctrine-orm

我正在使用Symfony 2组件构建一个库,其核心是我正在使用Symfony的依赖注入。

对于配置,我只需在创建服务容器后加载配置文件,如下所示:

$container = new ContainerBuilder();

$loader = new YamlFileLoader( $container, new FileLocator( $configPath ) );
$loader->load('container.yml');

$this->setContainer( $container );

这只是加载我的所有服务。但是,我现在需要配置Doctrine 2.当我添加一个基本的Doctrine配置文件时:

  doctrine:
      dbal:
          default_connection:   default
          connections:
              default:
                  driver:   "%database_driver%"
                  host:     "%database_host%"
                  port:     "%database_port%"
                  dbname:   "%database_name%"
                  user:     "%database_user%"
                  password: "%database_password%"
                  charset:  UTF8
      orm:
          default_entity_manager:   default
          entity_managers:
              default:
                  connection:       default
                  mappings:
                      AcmeDemoBundle: ~
                      AcmeStoreBundle: ~

运行测试时出现以下错误:

Symfony\Component\DependencyInjection\Exception\InvalidArgumentException: There is no extension able to load the configuration for "doctrine". Looked for namespace "doctrine", found none

我假设我需要为“doctrine”配置文件编写配置扩展,但我仍然坚持这方面的细节。

任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:0)

由于您使用的是普通容器,因此您必须自己配置doctrine部分。在Symfony框架中,它设置了一个依赖注入扩展,你可以在DoctrineBundle中找到它(在那里寻找见解)。

这就是所谓的semantic configuration