Я работаю над сторонним пакетом, который находится в каталоге vendor /.
У меня есть класс Entity, который выглядит следующим образом:
/**
* @ORM\Entity(repositoryClass="Acme\DemoBundle\Repository\ArticleRepository")
* @ORM\Table(name="acme_demo_article")
*/
class Article
И класс репозитория, подобный этому:
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Article::class);
}
}
Это приводит к следующей ошибке:
Репозиторий сущностей «Acme \ DemoBundle \ Repository \ ArticleRepository» реализует «Doctrine \ Bundle \ DoctrineBundle \ Repository \ ServiceEntityRepositoryInterface»,но его служба не может быть найдена.Убедитесь, что сервис существует и помечен как «doctrine.repository_service».
Если я удалю repositoryClass из определения сущности, у меня больше не будет ошибки, и я могу использовать doctrine как таковую из моего контроллера:
this->getDoctrine()->getRepository(Article::class)->findBy([], null, $limit, ($page - 1) * $limit);
Я попытался добавить хранилище в качестве службы в определение службы комплекта, но это ничего не меняет:
vendor / Acme / demo-bundle / Resources / config / services.yaml
services:
Acme\DemoBundle\Repository\:
resource: '../../Repository/ArticleRepository.php'
autoconfigure: true
tags: ['doctrine.repository_service']
отладка bin / console: autowire или debug: контейнер не будет показывать службу.
Я также пытался добавить расширение:
namespace Acme\BlogBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
class AcmeBlogExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader(
$container,
new FileLocator(__DIR__.'/../Resources/config')
);
$loader->load('services.xml');
}
}
Не работалоили.У меня нет впечатления, что расширение вызывается.Я попытался добавить в него конструктор и выполнить команду dump, die в конструкторе, но результаты дампа отсутствуют.
Итак, мой вопрос: как мне определить свои репозитории как сервис из каталога vendor?
Исходный код находится здесь: https://github.com/khalid-s/sf4-bundle-test