【发布时间】:2016-06-13 20:57:06
【问题描述】:
我添加了一些自定义字段,以便在有人注册到网站但我想更改表单上的一个字段时获得更多信息。我创建了一个具有 hook_form_alter 函数的模块,以便我可以更改注册表单的 field_first_name。这是代码
function user_registration_form_alter(&$form, &$form_state, $form_id){
if ($form_id == 'user_register_form'){
$form['field_first_name'] = array(
'#type' => 'textfield',
'#title' => t('First Name'),
'#description' => t('Enter your first name.'),
'#maxlength' => 255,
'#required' => TRUE,
);
}
if (isset($form['actions']['submit'])) {
$form['actions']['submit']['#submit'][] ='user_registration_form_submit';
}
}
我还创建了一个处理表单提交的函数。
function user_registration_form_submit(&$form, &$form_state)
{
$fe_id = db_insert('field_revision_field_first_name')
->fields(array(
'field_first_name_value' => $form_state['value']['field_first_name'],
))->execute();
drupal_set_message(t('your form entry has been added'));
}
我的问题是,当我提交表单并检查用户详细信息时。我发现数据库中不存在名字详细信息,或者当我以管理员身份登录并单击“人员”链接时。我发现除了我要更改的名字字段外,所有信息都已提交。我也试过不使用表单提交功能提交表单,但还是不行。
如果我添加 form_submit 函数,我会收到以下错误消息
注意:未定义的索引:user_registration_form_submit() 中的值(/var/www/html/lite/sites/all/modules/user_regestration/user_registration.module 的第 37 行)。
PDOException: SQLSTATE[HY000]: 一般错误: 1364 Field 'entity_id' 没有默认值:INSERT INTO {field_revision_field_first_name}(field_first_name_value)值 (:db_insert_placeholder_0);数组( [:db_insert_placeholder_0] => )在 user_registration_form_submit()(第 38 行 /var/www/html/lite/sites/all/modules/user_regestration/user_registration.module)。
这是我的代码的第 37 和 38 行
'field_first_name_value' => $form_state['value']['field_first_name'],
))->execute();
我先在本地主机上创建模块,然后再将其推送到实时网站
【问题讨论】:
-
我在第 37 行打错字了。它应该是“values”而不是“value”,但现在我收到以下错误......“PDOException: SQLSTATE[ HY000]:一般错误:1364 字段 'entity_id' 没有默认值:INSERT INTO {field_revision_field_first_name} (field_first_name_value) VALUES (:db_insert_placeholder_0); Array ([:db_insert_placeholder_0] => john) in user_registration_form_submit()(第 38 行/var/www/html/lite/sites/all/modules/user_regestration/user_registration.module)"