1

我在 drupal 7 工作。我需要用户注册表单中的一个字段,该字段必须是唯一的。它是一个整数字段,用于存储用户的 ID。我已经搜索了几个小时,没有任何进展。有人可以指导我完成这个吗?

谢谢你。

4

3 回答 3

5

您可以从 admin/config/people/account/fields (configuration->people->account settings) 向用户实体类型添加自定义“员工 ID”字段。您可以添加一个新的整数字段,并将其标记为显示在注册表单中,和/或必填。

要检查字段值是否为 unqiue,您需要使用自定义模块。在您的自定义模块中,使用form_id_form_alter 挂钩向注册表单添加自定义验证。然后在验证期间,您可以检查该值是否已存在于数据库中并返回表单错误。

自定义模块示例:

<?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');
        }
    }
于 2012-10-09T15:34:30.310 回答
1

您是否尝试过独特的字段模块?很确定它可以满足您的需要。

于 2012-10-10T06:16:58.777 回答
0

字段验证可以解决问题https://drupal.org/project/field_validation。即使在注册表单上,您也可以为每个字段设置任何规则

于 2014-03-19T22:52:51.227 回答