2013-07-17 39 views
1

我試圖建立一個事件偵聽爲我的項目,並按照本指南的指示:我編輯的services.xml像教程How to register eventlisteners,但我收到此錯誤信息,當我想測試一下:無法加載學說:配置,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不是服務配置的默認配置,幾乎所有廣泛使用的bundle都使用XMl ...出於很好的理由 - XML提供了更好的自動完成和驗證選項。對於XML文件的IDE集成可以爲您提供比YAML更容易的編碼,尤其是涉及Emmet或ZenCoding時。 – nifr

回答

1

你不需要你的服務配置中的原則配置。

連接驅動程序正在app/config/config.yml中配置。 監聽器配置看起來不錯 - 只需刪除doctrine:config的東西。

看看doctrine configuration reference

如果您沒有使用connection選項指定一個,Symfony會自動爲您的收聽者/訂閱者使用默認連接。文檔在這裏有點令人困惑,但教條連接只是爲了展示如何使用不同的連接。

+0

非常感謝,它的作品! – ChrisS