2015-04-06 53 views
0

我在新工作場所學習Symfony2,並且負責爲當前正在使用內聯代碼而不是Symfony驗證器和註釋的代碼添加驗證。將驗證器服務注入包中

我已經將驗證註釋添加到我的模型中,並向我的構造函數添加了一個參數。我還添加了一個參數傳遞給service.yml以便它能夠注入到我的包的類,但似乎我無法找到

@validator 

爲每Symfony的文檔(http://symfony.com/doc/current/book/validation.html)中描述的。如果我閱讀文檔的權利,我應該能夠只需添加@validator我services.yml並把它直接送入我的課,但我運行測試時,它說,該服務@validator無法找到:

The service "ugroup_media_personalization.flattening_service" 
has a dependency on a non-existent service "validator" 

那麼我在這裏做錯了什麼?

+0

非常奇怪,檢查服務是否真的加載到容器中,從shell啓動一個命令:'php app/console container:debug | grep validator' – Matteo 2015-04-06 12:46:42

+0

不,沒有任何返回...這可能是因爲我在一個捆綁?我知道這個人談到了在測試中加載內核。我已經在測試文件夾的AppKernel.php中打開以確保驗證程序包在那裏,但是我認爲它是已經加載的框架包的一部分 – 2015-04-06 12:49:27

+0

首先,@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ =如果不是,用於注入驗證器服務的service.yml文件中的正確服務名稱是什麼? – 2015-04-06 13:01:18

回答

1

的問題是,對於包中的配置文件沒有指定

framework: 
    validation: {enable_annotations: true} 

,因此框架不加載驗證服務。你可以簡單地使用:

framework: 
    validation: 
如果你想

觸發加載驗證模塊,但對我來說,我加入enable_annotations以確保驗證使用註釋工作!