我目前在做系统,哪些设置应该由管理员编辑。他不能添加它们,只能从现有的中选择/编辑。
所有后端都在 Sonata 中完成。
设置类:
class SystemSettings
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="key", type="string", nullable=true)
*/
private $key;
/**
* @ORM\Column(name="value", type="string", nullable=true)
*/
private $value;
}
问题是我有不同的值类型要存储。我有一些布尔,列表,整数等。例如,我想以列表的形式显示语言数组,但是当涉及到"页面上的帖子"设置,用户应该能够记下他想要的任何整数。有没有正确的方法来存储和显示?
答案 0 :(得分:0)
使用这种存储方法的问题如您所说,可变数据类型。很快你就会想要嵌套配置,最后你将编写复杂的查询来选择和更新嵌入的JSON字符串(相信我,我知道)。
我不能给你一个确切的解决方案,因为这是一个我仍在努力解决的问题。但是我还有一些尚待探索的解决方案包括:
使用MongoDB。因为它本身以JSON格式存储数据,所以它更适合存储任意数据类型(至少在标量和数组范围内)。
或动态文件配置。哪个是使用XML的可写文件,或JSON作为存储任意数据的格式。但是,您可能遇到的问题是服务器软件是否在多台计算机上运行。但是,如果您可以实施第一个解决方案,那么这个解决方案基本相同。
在所有情况下,配置应该是不可摧毁的,只要出现问题,应该有静态默认值,以便它可以依赖。我正在考虑调整Symfony \ Component \ Config组件来实现这一目标。