如何插入数据库 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)