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

Posted

技术标签:

【中文标题】如何插入数据库 Drupal 自定义字段【英文标题】:How to insert into database Drupal Custom Fields 【发布时间】:2014-11-20 07:24:35 【问题描述】:

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

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

它给出以下输出

http://i.stack.imgur.com/TOfS6.png

当我按下 Create new Account 按钮时,POST 数组是这样的:

http://i.stack.imgur.com/BtxhC.png

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

【问题讨论】:

【参考方案1】:

有两种方法可以保存此数据并与用户 ID ($user->uid) 关联。

    为“admin/config/people/accounts/fields”中的用户添加一个新字段。假设新字段名称为“ct”,它是一个列表类型字段。在钩子 form_alter 中,您可以将此选项分配给“ct”。 Drupal 将负责保存数据。

    您可以创建单独的表来保存此信息并在挂钩 hook_user_update 中使用 db_insert 函数。要检索此信息,您需要在 hook_user_load 中使用 db_query。

【讨论】:

对于第一个解决方案,我从管理面板添加了 ct 但我不知道如何分配。我创建了form_alter函数,我需要在里面写什么? 在 form_alter 添加:$form['#submit'][] = "function_to_submit_data_in_database";并将您的逻辑添加到函数名称“function_to_submit_data_in_database”。确保您的函数在默认提交处理程序之前首先执行。 function 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 istersiniz?"; $form['field_ct']['und']['#options'] = node_type_get_names(); $getarr=数组(); foreach($form['#user']->field_ct['und'] as $bb) $getarr[]=$bb['value']; $form['field_ct']['und']['#default_value'] = $getarr;休息;

以上是关于如何插入数据库 Drupal 自定义字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在用户帐户上显示创建的自定义注册字段中的数据(Drupal 8)

如何使用 drupal 6 中的自定义字段将自定义版本的节点/添加表单放在视图中?

在 drupal 中以内容类型形式显示自定义表字段值

自定义字段的drupal主题化视图:PHP代码

Drupal 自定义表单记住文本字段数据

在 drupal 8 的另一个自定义内容类型字段中使用自定义内容类型作为字段