Конфигурация Symfony2 + DoctrineMongoDBBundle - PullRequest
5 голосов
/ 02 марта 2011

Я пытаюсь соединить Symfony 2 с MongoDB таким образом:

  1. Регистрация DoctrineMongoDBBundle in AppKernel::registerBundles Метод
  2. Установить конфигурацию 'doctrine_mongo_db' (см. Ниже config.yml)
  3. Получить 'doctrine.odm.mongodb.document_manager' из контейнера в HelloController действие

И когда я пытаюсь запустить приложение MongoConnectionException выбрасывается.

Может кто-нибудь помочь мне решить эту проблему?

1024 *
*

AppKernel.php

public function registerBundles()
{
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\DoctrineMongoDBBundle\DoctrineMongoDBBundle(),
            new Sensio\HelloBundle\HelloBundle()
        );

        return $bundles;
    }

config.yml

framework:
    charset:       UTF-8
    router:        { resource: "%kernel.root_dir%/config/routing.yml" }
    templating:    { engines: ['twig'] } 

## Doctrine Configuration

doctrine_mongo_db:
    server: mongodb://root:root@192.168.0.111:27017
    default_database: test
    options: { connect: true }
    mappings:
        HelloBundle: { type: annotation, dir: Document }

# Twig Configuration

twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%

HelloController.php

/* @var $dm \Doctrine\ODM\MongoDB\DocumentManager */
$dm = $this->get('doctrine.odm.mongodb.document_manager');

Исключение (строка 96)

connecting to failed: Transport endpoint is not connected

in ~/vendor/doctrine-mongodb/lib/Doctrine/MongoDB/Connection.php line 96 »

93.    if ($this->server) {
94.        $this->mongo = new \Mongo($this->server, $this->options);
95.    } else {
96.        $this->mongo = new \Mongo();
97.    }

1 Ответ

1 голос
/ 24 июня 2012

Проблема в загрузке конфигурации DoctrineMongoDBBundle.Исправление (https://github.com/fabpot/symfony/pull/740) должно быть объединено в ближайшее время.

Пока вы можете использовать фиксированный метод ниже.

public function load(array $configs, ContainerBuilder $container)
{
    $mergedConfig = array();
    foreach ($configs as $config) {
        $mergedConfig = array_merge_recursive($mergedConfig, $config);
    }

    $this->doMongodbLoad($mergedConfig, $container);
}
...