我在drupal 7工作。我需要用户注册表单中的一个字段,该字段需要是唯一的。它是存储用户ID的整数字段。我一直在寻找几个小时没有任何发展。有人可以指导我完成这个吗?
谢谢。
答案 0 :(得分:5)
您可以从admin / config / people / account / fields(配置 - > people->帐户设置)向用户实体类型添加自定义“staff id”字段。您可以添加一个新的整数字段,并将其标记为在注册表单中显示和/或必需。
要检查字段值是否为unqiue,您需要使用自定义模块。在自定义模块中,使用form_id_form_alter hook向注册表单添加自定义验证。然后在验证期间,您可以检查数据库中是否存在该值,并返回表单错误。
自定义模块的示例:
<?php
function mymodule_form_user_register_form_alter(&$form, &$form_state, $form_id){
$form['#validate'][] = 'mymodule_user_registration_validate';
}
function mymodule_user_registration_validate(&$form,&$form_state){
$staff_id = $form_state['values']['staff_id_field'];
$check_unique_query = 'SELECT field_staff_id_value FROM {field_data_staff_id} WHERE field_staff_id_value = :staff_id LIMIT 1';
//if a result is returned, that means the $staff_id exists
if (db_query($check_unique_query,array(':staff_id'=>$staff_id))->fetchField()){
form_set_error('staff_id_field','This Staff ID is already in use');
}
}
答案 1 :(得分:1)
你试过Unique field module吗?很确定它能满足您的需求。
答案 2 :(得分:0)
字段验证可以解决问题https://drupal.org/project/field_validation。您甚至可以在注册表单上为每个字段设置任何规则