2012-02-01 21 views
2

我試着通過services.yml定製庫加載我的服務服務傳遞自定義實體repositoriy類通過services.yml

現在我有:

parameters: 
    job_entity_name: Marek\JobeetBundle\Entity\Job 
    category_entity_name: Marek\JobeetBundle\Entity\Category 

services: 
    job_metadata: 
    class: Doctrine\ORM\Mapping\ClassMetaData 
    arguments: 
     name: [%job_entity_name%] 
    category_metadata: 
    class: Doctrine\ORM\Mapping\ClassMetaData 
    arguments: 
     name: [%category_entity_name%] 
    job_repo: 
    class: Marek\JobeetBundle\Repositories\JobRepository 
    arguments: 
     em: [@doctrine.orm.entity_manager] 
     class: [@job_metadata] 
    category_repo: 
    class: Marek\JobeetBundle\Repositories\CategoryRepository 
    arguments: 
     em: [@doctrine.orm.entity_manager] 
     class: [@category_metadata]  
    job_service: 
    class: Marek\JobeetBundle\JobService 
    arguments:  
     jobRepo: [@job_repo] 
     categoryRepo: [@category_repo] 

錯誤:

Notice: Array to string conversion in D:\Devel\symfony2\jobeet\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadata.php line 66

我放棄了。有人可以幫忙嗎?

[編輯]

當然,我的模式是壞,糾正爲:

services: 
    job_metadata: 
    class: Doctrine\ORM\Mapping\ClassMetaData 
    arguments: 
     name: "Marek\JobeetBundle\Entity\Job" 
    category_metadata: 
    class: Doctrine\ORM\Mapping\ClassMetaData 
    arguments: 
     name: "Marek\JobeetBundle\Entity\Category" 
    job_repo: 
    class: Marek\JobeetBundle\Repositories\JobRepository 
    arguments: 
     em: @doctrine.orm.entity_manager 
     class: @job_metadata 
    category_repo: 
    class: Marek\JobeetBundle\Repositories\CategoryRepository 
    arguments: 
     em: @doctrine.orm.entity_manager 
     class: @category_metadata  
    job_service: 
    class: Marek\JobeetBundle\JobService 
    arguments:  
     jobRepo: @job_repo 
     categoryRepo: @category_repo 

回答

3

在這個答案,你會發現一個更好的方式來定義庫的服務(即使用工廠服務和工廠方法)。

Injecting repositories