Symfony 3.4.4 + Sonata ADmin Bundle + уже существующие сущности

Я начинаю с Symfony 3.4.4 + SonataAdmin Bundle.

У меня все работает правильно.

У меня уже есть сгенерированные сущности, и при интеграции сущностей в пакете SonataAdmin с помощью «php bin/console sonata:admin:generate» сущности создаются в «src/AppBundle/Resources/config/services.yml

И этот файл не интегрирован в мой пакет.

Я читал, что использование Dependency Injection является наиболее правильным способом загрузки этого файла, но я не знаю, как это делается.

Может ли кто-нибудь объяснить мне, как установить внедрение зависимостей и правильно загрузить этот файл с помощью «хороших практик» Symfony?


person Javier    schedule 17.02.2018    source источник
comment
У вас есть эта строка - { resource: "@AppBundle/Resources/config/services.yml" } в app/config/config.yml?   -  person Your Common Sense    schedule 19.02.2018
comment
Нет, у меня не было этой инъекции зависимостей. Спасибо!!   -  person Javier    schedule 19.02.2018


Ответы (1)


Я думаю, вы что-то путаете. Внедрение зависимостей — это принцип разработки программного обеспечения, позволяющий отделить зависимость классов от других классов, не устанавливая свойства непосредственно внутри класса. Вместо этого вы передаете его, например, конструктору или устанавливаете его впоследствии с помощью общедоступного метода установки. Благодаря этому ваши классы можно заменить, и это особенно полезно для тестирования исходного кода.

Таким образом, вы не можете установить принцип разработки программного обеспечения.

И ваши сущности не генерируются в вашем services.yml. Здесь определяются ваши службы, а ваши сущности обычно переходят в src/AppBundle/Entity.

Symfony/Sonata использует внедрение зависимостей, определяя сервисы в services.yml и сообщая им, какие параметры они получат.

Например

services:
    mailer:
        class:     Mailer
        arguments: ['%mailer.transport%']

Здесь параметр mailer.transport будет внедрен в конструктор класса Mailers.

В вашей папке app/config много yml-файлов, но все они объединены в config.yml

Так что, если у вас нет инструкции, как

- { resource: "@AppBundle/Resources/config/services.yml" } 

в вашем приложении/config/config.yml ваши сервисы никогда не будут загружены.

person Jim Panse    schedule 20.02.2018