Symfony 3.4.4 + Sonata ADmin Bundle +已有的实体

时间:2018-02-17 08:51:48

标签: dependency-injection sonata-admin symfony-3.4

我从Symfony 3.4.4 + SonataAdmin Bundle开始。

一切都适合我。

我已经通过“php bin / console sonata:admin:generate”生成实体并在SonataAdmin包中的实体集成中生成“src / AppBundle / Resources / config / services.yml

该文件未集成到我的包中。

我已经读过使用依赖注入是加载该文件最正确的方法,但我不知道它是如何完成的。

有人可以向我解释如何安装依赖注入,并通过symfony的“良好实践”正确加载此文件吗?

1 个答案:

答案 0 :(得分:1)

我觉得你很困惑。 依赖注入是软件开发中的一个原则,它通过不直接在类中设置属性来将类依赖性与其他类分离。相反,您可以将它作为示例提供给构造函数,或者之后通过公共setter方法设置它。有了这个,你的类是可替换的,这对测试你的源代码特别有用。

所以你无法安装软件开发原则。

您的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" } 

在您的app / config / config.yml中,您的服务永远不会被加载。