Drupal 7 如何将Drupal自定义字段插入数据库

Drupal 7 如何将Drupal自定义字段插入数据库,drupal-7,drupal-content-types,Drupal 7,Drupal Content Types,我使用以下代码检索内容类型 $form['ct'] = array( '#type' => 'checkboxes', '#options' => node_type_get_names(), '#title' => t('Hangi tür içerikler hakkında bilgi almak istersiniz?'), ); 它给出以下输出 当我按下“创建新帐户”按钮时,POST数组如下所示: 我的问题是如何将这些值插入数据库并读取?有两种方法可以保

我使用以下代码检索内容类型

$form['ct'] = array(
  '#type' => 'checkboxes',
  '#options' => node_type_get_names(),
  '#title' => t('Hangi tür içerikler hakkında bilgi almak istersiniz?'),
);
它给出以下输出

当我按下“创建新帐户”按钮时,POST数组如下所示:


我的问题是如何将这些值插入数据库并读取?

有两种方法可以保存这些数据并与用户ID$user->uid关联

从“admin/config/people/accounts/fields”为用户添加新字段。假设新字段名为“ct”,它是列表类型字段。在hook form_alter中,您可以将此选项指定给“ct”。Drupal将负责保存数据

您可以创建单独的表来保存这些信息,并在hook\u user\u update中使用db\u insert函数。要检索此信息,需要在hook\u user\u加载中使用db\u查询


对于第一个解决方案,我从管理面板添加了ct,但我不知道如何分配。我创建了form_alter函数,我需要在其中写什么?在form_alter中添加:$form['submit'][]=function_to_submit_database_;并将您的逻辑添加到函数名函数到数据库中的提交数据。确保您的函数在默认提交处理程序之前首先执行。函数MY_MODULE_form_alter&$form,&$form_state,$form_id{switch$form_id{case'user_profile_form':$form['field_ct']['und']['options']=node_type_get_names;break;}太好了,它在概要视图上显示了所选的框,但是,当我单击“编辑配置文件链接”复选框时,复选框不会显示为选中状态。我该如何解决?我的朋友找到了$form['field_ct']['und']['title']=Hangi Tür Içerikler hakkında bilgi almak istersini?;$form['field\u ct']['und']['options']=node\u type\u get\u name$getarr=数组;foreach$form['user']->field_ct['und']为$bb{$getarr[]=$bb['value'];}$form['field_ct']['und']['default_value']=$getarr;打破 }