我创建了一个自定义Drupal模块,现在想为它保存一些首选项。这些基本上是3个字符串数组,应该保存,并且(管理)用户也可以轻松编辑。
在Drupal中最好的方法是什么?我读过关于variable_set
和variable_get
的内容,它们是否适合存储特定于模块的数据?
有没有办法轻松创建管理表单来编辑这些变量,还是我必须从头开始编写?
答案 0 :(得分:1)
如果您想快速完成,请使用variable_get / set和system_settings_form()。
答案 1 :(得分:0)
需要比评论更多的空间。 @yorirou有正确的答案。但是,要存储/检索每个由不同小部件输入的字符串数组,您有一条简单的路径:
使用#tree属性将所有内容包装在字段集中。该字段集中的所有字段将折叠为基于变量名称的字段集名称和键值的各个字段名称构成的数组。数组序列化在variable_get / set上自动处理。
$form['custom_settings'] = array(
'#title' => t('My settings'),
'#type' => 'fieldset',
'#tree' => TRUE,
);
$form['custom_settings']['first_setting'] = array(
'#type' => 'textfield',
// etcetera
);
$form['custom_settings']['second_setting'] = array(
'#type' => 'textfield',
// etcetera
);
在输出已保存的数组时,您将得到如下内容:
custom_settings = Array(
'first_setting' => 'some string',
'second_setting' => 'some other string',
)
您可以使用#validate处理程序或使用表单数组中的#parents元素获得相同的效果,但这些需要额外的工作才能纠正默认值。