6

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

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

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

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

4

2 回答 2

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);
}
于 2012-07-24T16:41:27.393 回答
4

除了弗洛伦特的回答之外,实体是纯粹的数据对象。他们不应该知道您的应用程序中的任何其他变量或服务。我更好奇为什么您的实体需要了解有关系统范围内的 API 密钥的任何信息。在背景信息很少的情况下,我会说你应该重新考虑你正在尝试做的事情。

您需要一个服务来与 API 交互,最好通过容器进行配置。我看不出这与实体有什么关系。

于 2012-07-25T05:18:41.340 回答