Dependency injection 通过services.yml将自定义实体库类传递给服务
我尝试通过services.yml加载带有自定义存储库的服务 现在我有:Dependency injection 通过services.yml将自定义实体库类传递给服务,dependency-injection,symfony,doctrine-orm,Dependency Injection,Symfony,Doctrine Orm,我尝试通过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:
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]
错误:
注意:中的数组到字符串转换
D:\Devel\symfony2\jobeet\vendor\doctor\lib\doctor\ORM\Mapping\ClassMetadata.php
第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
在这个答案中,您将找到一种更好的方法将存储库定义为服务(即使用factory服务和factory方法)