You are here

存储设置

   在前面的例子中,修改设置并点击“保存配置”按钮,可以正常工作。如果点击了“重置为默认值”按钮,那么各个字段将被重置为它们的默认值。下面部分将描述如何实现这一点。

 
使用Drupal的variables表
  首先,让我们看一下字段“Annotations per node”(“每个节点的注释数”)。它的#default_value键是这样设置的:
variable_get('annotate_limit_per_node', 1)
 
  Drupal在数据库中有一个名为variables的表,并且键-值对可以使用variable_set($key,$value)来存储,使用variable_get($key,$default)来取回。所以我们实际上说的是,“将字段‘Annotations per node’的默认值设置为数据库表variables中存储的变量annotate_limit_per_node的值,如果该值不存在,那么使用1作为默认值”。所以当点击“重置为默认值”按钮时,Drupal将从variables表中删除键annotate_limit_per_node对应的当前条目,并使用默认值1.
 
警告variables表中存储和取回设置时,为了避免命名空间的冲突,你应该让你的表单字段的名字和变量的键(如上例中的annotate_limit_per_node)的名字相同。命名方式为:你的模块名加上一个描述性的名称。表单字段和变量的键应该同时使用该名字。
 
 
    由于 Annotations will be deleted”字段是一个单选按钮,所以它看起来复杂了一点。这个字段的#option如下所示:
'#options' => array(
    t('Never'),
    t('Randomly'),
    t('After 30 days')
)
 
    当PHP遇到一个没有键的数组时,它默认的为其插入数字键,所以这个数组在内部实际上就是:
'#options' => array(
    [0] => t('Never'),
    [1] => t('Randomly'),
    [2] => t('After 30 days')
)
 
    当我们为这个字段设置默认值时,我们使用:
'#default_value' => variable_get('annotate_deletion', 0) //默认为Never
 
    这意味着,当起作用时,默认为数组的项目0,也就是t('Never')。

老葛的Drupal培训班 Think in Drupal

Drupal版本: