-2

在 Symfony 5.0 中,我需要访问实体内部 services.yaml 中定义的参数。将 services.yaml 中的 parameter_bag 注入我的实体时,例如

App\Entity\MyEntity:
    class: App\Entity\MyEntity
    calls:
        - [setParameterBag, ['@parameter_bag']]

如果我创建一个新实体,它会起作用

$myEntity = new MyEntity();

然后使用my函数setParameterBag(..)在MyEntity.php中注入参数包,定义如下

private $params;
public function setParameterBag(ParameterBagInterface $params) {
    $this->params = $params;
}

但是如果实体是从数据库加载的,$this->params则为空。将参数包注入实体的正确方法(或任何方法)是什么?

4

1 回答 1

3

这种方法是错误的,你不应该向实体注入任何东西,无论是参数还是类。实体应该只存储数据并且应该独立于一切。

每次通过“新建”创建实体时,都不会添加依赖项。

你必须从你的控制器调用 $this-get('serviceName') 。

如果要向实体添加参数,只需使用 setter。

public function setParam1($param1) {
    $this->param1 = $param1;
}
于 2020-04-03T09:27:11.407 回答