在实体类中访问Symfony2全局参数

时间:2012-07-24 15:38:41

标签: symfony parameters model

我的parameters.ini文件中存储了一个值,我需要在模型的prepersist方法中访问它。

通常我使用$this->container->getParameter('value');,但容器在实体中不可用。

有没有办法在实体类中获取参数?

P.S。该值是我在prepersist期间从中提取信息的服务的API密钥。最佳做法是将密钥/密码保存在parameters.ini

2 个答案:

答案 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交互的服务,最好通过容器进行配置。我不知道这与实体有什么关系。