【发布时间】:2016-08-20 12:24:45
【问题描述】:
我正在开发一个 Symfony 2 WebApp,它使用 PayPal Rest API 创建和接受 PayPal 付款。
为了能够将每个用户重定向到其语言的 PayPal 页面,必须为每种语言/区域创建一个 Experience Profile。
每个Experience Profile 只能创建一次。例如,一旦创建了 US 语言环境的配置文件,该配置文件就可以为使用相同语言环境的每个客户重复使用:
- 客户输入他的地址并在我的页面上输入 XY
- 我的页面会检查
XY语言环境的配置文件是否存在 - 为
XY语言环境创建新配置文件并将其存储或重新使用现有配置文件
每个配置文件都有一个唯一的 ID。 因此我正在寻找一种方法来存储区域设置/ID 对。一个简单的解决方案是 JSON 文件。 但是该文件在 Symfony 结构中的存储位置是什么?
每当来自新国家/地区的用户进行付款时,都会即时创建个人资料。因此,这些数据是在运行时创建的,因此我认为它不属于 Symfony 的标准 config 目录。我什至不知道这些文件夹是否应该由我的代码访问/写入。
那么:存储此类文件的正确位置是什么。
编辑: 正如@JimL 在 cmets 中指出的那样,当然可以将数据存储在数据库中。然而,我正在处理的支付包应该在不同的项目中使用,因此应尽可能与项目的其余部分分开。
这里的目标是将数据存储在文件中,而不是数据库中。当然,数据库效率更高,但在这种特殊情况下,一个简单的文件就足够了。
问题是:在哪里存储这个文件?第一个想法是使用/MyBundle/Resources/config,因为这个目录包含所有其他配置文件。但是,对于在运行时更改的文件,这是否也是正确的地方?
【问题讨论】:
-
听起来您可以将其添加为与用户相关的实体。然后将其存储在db中
-
不,这不是要走的路。个人资料未链接到特定用户。所有选择“美国”作为国家/地区的用户都将使用美国配置文件。如果同一用户在下次购买时选择“加拿大”,他应该使用 CA 配置文件等。此外,支付逻辑是在单独的包中实现的,因此可以在其他项目中重复使用。我想让这些数据远离数据库。
-
Bundles 也可以添加数据库实体,我仍然认为这应该在数据库中。如果未链接到用户,则链接到付款
-
当然 DB 是一种选择,但我不认为,在这种情况下,这将是最好的解决方案。这是在运行时创建的配置数据。没有实体等。所以问题是:在哪里存储这种配置文件。我已经更清楚地编辑了问题。