Сервисы Symfony 4 игнорируются при объявлении внутри файла ресурсов - PullRequest
0 голосов
/ 27 февраля 2019

Следуя официальной документации ( здесь ), я решил разделить файл конфигурации services.yaml на несколько файлов для удобства чтения.

Затем я создал файл config / services / doctrine_listeners.yaml, содержащий это единственное определение сервиса:

services:
    _defaults:
        autowire: true     
        autoconfigure: true

    App\Listeners\BookListener:
        tags:
            - { name: doctrine.event_listener, event: prePersist  }

И я импортирую его следующим образом в мой config / services.yaml:

imports:
    - { resource: 'services/doctrine_listeners.yaml' }

При такой обработке слушатель никогда не создается.Если я вместо этого объявлю это прямо в config / services.yaml, это будет работать.

Для меня это похоже на ошибку, я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Наиболее вероятная причина - избыточность при добавлении ваших сервисов, что не позволяет загружать сервисы.Было бы здорово, если бы вы поделились здесь контентом config / services.yml.

0 голосов
/ 27 февраля 2019

Возможно, проблема в том, что служба перезаписана файлом службы по умолчанию.В нем есть обнаружение службы PSR-4 для всех классов в src:

# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name
App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

Это также зарегистрирует ваших слушателей, и похоже, что это перезапишет предыдущую конфигурацию из вашего файла.

Я бы рекомендовал добавить Listeners в раздел исключения в services.yaml, а затем вместо этого переместить обнаружение служб для них в ваш файл:

services:
    _defaults:
        autowire: true     
        autoconfigure: true

    App\Listeners\:
        resource: '../../src/Listeners/*'

    App\Listeners\BookListener:
        tags:
            - { name: doctrine.event_listener, event: prePersist  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...