Параметры доступа 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;
}