我的parameters.ini文件中存储了一个值,我需要在模型的prepersist方法中访问它。
通常我使用$this->container->getParameter('value');
,但容器在实体中不可用。
有没有办法在实体类中获取参数?
P.S。该值是我在prepersist期间从中提取信息的服务的API密钥。最佳做法是将密钥/密码保存在parameters.ini
中答案 0 :(得分:8)
最佳做法是使用服务来保留您的实体。当你调用 updateMyEntity()
服务方法时,这个会注入容器并设置你的参数。
在您的控制器内(或任何您想要的):
$user = new User('foo');
$user->setSomeProperty('bar');
$userService->update($user);
在UserService
:
public function update(User $user) {
$user->setSomeParameter($this->container->getParameter('value'));
$this->em->persist($user);
}
答案 1 :(得分:4)
除了Florent的答案之外,实体意味着纯粹是数据对象。他们不应该知道您的应用程序中的任何其他变量或服务。我对为什么您的实体需要了解系统范围内的API密钥更感兴趣。由于背景信息很少,我会说你应该重新考虑你想要做的事情。
您需要一项与API交互的服务,最好通过容器进行配置。我不知道这与实体有什么关系。