1

我正在构建一个 CiviCRM 扩展,它还有一个带有 UI 的管理部分,用于设置特定于扩展的各种配置。我正在寻找一种将配置存储在数据库中的推荐方法。

一种方法是专门为此目的在数据库中创建一个新表,但如果只保存几个选项,这似乎有点过头了。

另一种方法可能是使用该civicrm_setting表,这首先是有意义的,但我不确定该表是否用于此目的。

任何意见,将不胜感激。

4

2 回答 2

3

是的,您可以而且应该明确地使用civicrm_setting.

civicrm_setting有一列group_name应包含您的扩展程序的唯一标识符。我通常会输入扩展名的全名,org.example.extension但它可以是任何字符串,并且在核心它们使用标签名称(例如,Preference settings)。

要与这些设置进行交互,您可以执行以下操作:

// save the setting
CRM_Core_BAO_Setting::setItem($value, 'My group name', 'my_setting_name');

// get the setting
$setting = CRM_Core_BAO_Setting::getItem('My group name', 'my_setting_name');

// get all the setting for you extension
$settings = CRM_Core_BAO_Setting::getItem('My group name');

似乎有一个 API,Setting但它在 CiviCRM 4.4.x 中似乎不能很好地工作。不知道在 CiviCRM 4.5 中是否更好。

于 2014-11-07T22:34:26.623 回答
0

您还可以做的(我们目前的做法)是使用单例模式将您的配置逻辑存储在一个特殊的类中(就像 CiviCRM 所做的那样)。如果您想查看示例,请查看: https ://github.com/CiviCooP/no.maf.oppgavexml/blob/master/CRM/Oppgavexml/Config.php

于 2015-02-12T09:08:49.220 回答