访问实体类中的Symfony2全局参数
我在parameters.ini文件中存储了一个值,我需要在模型的prepersist方法中访问它 通常我使用访问实体类中的Symfony2全局参数,symfony,parameters,model,Symfony,Parameters,Model,我在parameters.ini文件中存储了一个值,我需要在模型的prepersist方法中访问它 通常我使用$this->container->getParameter('value'),但该容器在实体中不可用 有没有办法在实体类中获取参数 另外,该值是一个API键,用于我在prepersist期间从中提取信息的服务。最佳实践是在参数中保留密钥/密码。ini最佳实践是使用服务来持久化实体。这个方法将在调用updateMyEntity()服务方法时注入容器并设置参数 控制器内部(或任何您想要的)
$this->container->getParameter('value')代码>,但该容器在实体中不可用
有没有办法在实体类中获取参数
另外,该值是一个API键,用于我在prepersist期间从中提取信息的服务。最佳实践是在参数中保留密钥/密码。ini最佳实践是使用服务来持久化实体。这个方法将在调用updateMyEntity()
服务方法时注入容器并设置参数
控制器内部(或任何您想要的):
在用户服务中
:
public function update(User $user) {
$user->setSomeParameter($this->container->getParameter('value'));
$this->em->persist($user);
}
除了Florent的答案之外,实体也意味着纯粹的数据对象。他们不应该知道应用程序中的任何其他变量或服务。我更好奇的是,为什么您的实体需要了解系统范围内的API密钥。由于背景资料很少,我想说你应该重新考虑一下你想做什么
您需要一个与API交互的服务,理想情况下通过容器进行配置。我看不出这与实体有什么关系。设置用户服务比我想得到的要复杂得多。这个基本功能(获取全局参数)S2不会将参数暴露于全局空间。如果您确实觉得需要访问$kernel并从那里提取它。但是你真的应该使用一个服务。我在拉预试期间输入的L物理位置的纵横比。你仍然可以使用服务来做这件事。这里有一个bundle可以做到这一点:-它使用事件检查需要添加坐标的实体,并在保存时查询和更新它们。希望这有帮助。
public function update(User $user) {
$user->setSomeParameter($this->container->getParameter('value'));
$this->em->persist($user);
}