2013-07-17 1 views
1

Я пытаюсь создать eventlistener для моего проекта и следовать инструкциям этого руководства: How to register eventlisteners Я отредактировал свой services.xml, как в учебнике, но я получаю это сообщение об ошибке, когда я хочу, чтобы проверить:Не могу загрузить doctrine: config, services.xml

InvalidArgumentException: There is no extension able to load the configuration for "doctrine:config" (in /var/www/symfony/src/Acme/AppBundle/DependencyInjection/../Resources/config/services.xml). Looked for namespace "http://symfony.com/schema/dic/doctrine", found none 

Мой services.xml:

<?xml version="1.0" ?> 

<container xmlns="http://symfony.com/schema/dic/services" 
    xmlns:doctrine="http://symfony.com/schema/dic/doctrine" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 



    <doctrine:config> 
     <doctrine:dbal default-connection="default"> 
      <doctrine:connection driver="pdo_sqlite" memory="true" /> 
     </doctrine:dbal> 
    </doctrine:config> 

    <services> 
     <service id="my.listener" class="Acme\AppBundle\EventListener\Confirmer"> 
      <tag name="doctrine.event_listener" event="preUpdate" /> 
     </service> 

    </services> 

</container> 

Где проблема?

+0

Мне нужно изменить любую конфигурацию, чтобы использовать services.yml? – ChrisS

+0

Symfony [руководство] (http://symfony.com/doc/2.2/cookbook/doctrine/event_listeners_subscribers.html) отображает каждый раздел конфигурации на трех языках: YAML, XML и PHP. Вы можете переключаться между ними, используя вкладки вверху. По умолчанию используется YAML. –

+0

YAML не является стандартным для конфигурации службы, почти все широко используемые пакеты там используют XMl ... по уважительной причине - XML ​​обеспечивает лучшие варианты автозавершения и проверки. Интеграция IDE для файлов XML может обеспечить вам более легкое кодирование, чем YAML, особенно при использовании Emmet или ZenCoding. – nifr

ответ

1

Вам не нужна конфигурация доктрины в конфигурации вашего сервиса.

Драйвер подключения настраивается внутри app/config/config.yml. Конфигурация слушателя выглядит неплохо - просто удалите doctrine:config.

Посмотрите на doctrine configuration reference.

Symfony автоматически использует подключение по умолчанию для вашего слушателя/подписчика, если вы не укажете его с помощью опции connection. Документация здесь немного запутанна, но соединение доктрины находится здесь, чтобы показать, как использовать другое соединение.

+0

Большое спасибо, это работает! – ChrisS