Параметры доступа Symfony из services.yaml в Entity

В Symfony 5.0 мне нужно получить доступ к параметрам, определенным в services.yaml внутри объекта. При введении параметра parameter_bag в services.yaml в мою сущность, например

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

Это работает, если я создаю новую сущность с

$myEntity = новый MyEntity();

Затем пакет параметров вводится с помощью моей функции setParameterBag(..) в MyEntity.php определяется следующим образом

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

Но если сущность загружена из БД $this->paramsнулевой. Как правильно (или любым способом) ввести пакет параметров в сущность?

1 ответ

Такой подход неверен, вы никогда не должны ничего вводить в сущности, ни параметры, ни классы. Сущности должны хранить только данные и быть независимыми от всего.

Каждый раз, когда сущность создается с помощью "нового", зависимости не добавляются.

Вы должны вызвать $this-get('serviceName') из своего контроллера.

если вы хотите добавить параметр к сущности, просто используйте сеттер.

public function setParam1($param1) {
    $this->param1 = $param1;
}
Другие вопросы по тегам