Передача пользовательских классов репозиториев объектов в сервис через services.yml - PullRequest
2 голосов
/ 01 февраля 2012

Я пытаюсь загрузить свой сервис с помощью пользовательских репозиториев через 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]

Ошибка:

Примечание: Массив вПреобразование строки в D: \ Devel \ symfony2 \ jobeet \ vendor \ doctrine \ lib \ Doctrine \ 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

1 Ответ

3 голосов
/ 06 февраля 2012

В этом ответе вы найдете лучший способ определить репозитории как сервисы (то есть с использованием фабричных сервисов и фабричных методов).

Инъекционные репозитории

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...