2016-03-12 3 views
2

Я довольно новичок в кодировании и на этом сайте, поэтому мне жаль ошибок, которые я буду и/или не сделаю.Недопустимый тип для пути "doctrine_mongodb.connections". Ожидаемый массив, но получил строку

Я пытаюсь создать сеттеров и добытчиками для MongoDB (с использованием Symfony 3), но когда я типа в консоль

php C:\wamp64\www\test\app\console doctrine:mongodb:generate:documents MainBundle 

я получаю эту ошибку:

[Symfony\Component\Config\Definition\Exception\InvalidTypeException]     
    Invalid type for path "doctrine_mongodb.connections". Expected array, but got string 

Заметили темы, о иерархии по YML и отступы и не смогли найти правильный ответ. Как я сказал им довольно новый и не знаю много о том, как эта система работает, поэтому, если у кого-нибудь есть идеи, что проблема может быть здесь, пожалуйста, поделитесь ими со мной. это мой config.yml файл:

imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: services.yml } 
    - { resource: "@MainBundle/Resources/config/services.yml" } 

# Put parameters here that don't need to change on each machine where the app is deployed 
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 
parameters: 
    locale: en 

framework: 
    #esi:    ~ 
    #translator:  { fallbacks: ["%locale%"] } 
    secret:   "%secret%" 
    router: 
     resource: "%kernel.root_dir%/config/routing.yml" 
     strict_requirements: ~ 
    form:   ~ 
    csrf_protection: ~ 
    validation:  { enable_annotations: true } 
    #serializer:  { enable_annotations: true } 
    templating: 
     engines: ['twig'] 
    default_locale: "%locale%" 
    trusted_hosts: ~ 
    trusted_proxies: ~ 
    session: 
     # handler_id set to null will use layout session handler from php.ini 
     handler_id: ~ 
    fragments:  ~ 
    http_method_override: true 

# Twig Configuration 
twig: 
    debug:   "%kernel.debug%" 
    strict_variables: "%kernel.debug%" 

# Doctrine Configuration 
doctrine: 
    dbal: 
     driver: pdo_mysql 
     host:  "%database_host%" 
     port:  "%database_port%" 
     dbname: "%database_name%" 
     user:  "%database_user%" 
     password: "%database_password%" 
     charset: UTF8 
     # if using pdo_sqlite as your database driver: 
     # 1. add the path in parameters.yml 
     #  e.g. database_path: "%kernel.root_dir%/data/data.db3" 
     # 2. Uncomment database_path in parameters.yml.dist 
     # 3. Uncomment next line: 
     #  path:  "%database_path%" 



    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 

# Swiftmailer Configuration 
swiftmailer: 
    transport: "%mailer_transport%" 
    host:  "%mailer_host%" 
    username: "%mailer_user%" 
    password: "%mailer_password%" 
    spool:  { type: memory } 

doctrine_mongodb: 
    connections: default 
    default: 
     server: mongodb://localhost:27017 
     options: {} 
    default_database: test_database 
    document_managers: 
    default: 
     auto_mapping: true 

ответ

2

У вас не хватает 2 места выравнивание::

doctrine_mongodb: 
    connections: default 
    default: # <-- here 
     server: mongodb://localhost:27017 
     options: {} 

и вам не нужно указать default значение для connections вроде этого: connections: default, но вместо этого, он должен быть массивом.

Так действительные конфигурации должны быть:

doctrine_mongodb: 
    connections: 
    default: # <-- indentation added here 
     server: mongodb://localhost:27017 
     options: {} 
    default_database: test_database 
    document_managers: 
    default: 
     auto_mapping: true 

См configuration reference.

Кроме того, я вижу, что вы используете 4 отступов в 3/4 вашего файла конфигурации. Я бы порекомендовал вам использовать тот же самый отступ в файле, чтобы в будущем у вас не было никаких проблем, плюс структура будет выглядеть более последовательной.

+0

Это что-то для другого вопроса. И это связано с конфигурацией doctrine.orm. –

+0

@marras, поэтому ошибка понятна. В вашей службе 'doctrine.orm.layout_entity_manager' вы пытаетесь внедрить сервис' doctrine.orm.quote_strategy.layout', который не указан в файле конфигурации служб, его не существует, но это проблема для другого вопроса и не связано с этим. – takeit

+0

Итак, я не совсем уверен, что сделал магия, но я нашел эту идею здесь: http://stackoverflow.com/questions/20067622/symfony2-post-update-cmd-gives-an-error-occurred-when- generate-the-bootstrap , чтобы удалить папки/bin и/vendor вашего проекта. Затем сделайте установку композитора (или установите php composer.phar, если вы не установили композитор). Кроме того, я запускал 'php composer.phar update doctrine/mongodb-odm doctrine/mongodb-odm-bundle', и вся система теперь работает нормально. – marras

0

Ошибка очень ясно - просто изменить doctrine_mongodb.connections значение array.

# app/config/config.yml 
doctrine_mongodb: 
    connections: 
     default: 
      server: mongodb://localhost:27017 
      options: {} 
+0

Не удалось выполнить такую ​​же ошибку: 'code' [Symfony \ Component \ Config \ Definition \ Exception \ InvalidTypeException] Недопустимый тип для пути" doctrine_mongodb.connections.0 ". Ожидаемый массив, но получил строку – marras

+0

проверить мой обновленный ответ - это должен быть массив, но также и параметры внутри него. –

Смежные вопросы