1

私は drupal 7 で作業しています。一意である必要があるユーザー登録フォームのフィールドが必要です。ユーザーの ID を格納する整数フィールドです。私は何の開発もせずに数時間探し回っています。誰かがこれを案内してくれますか?

ありがとうございました。

4

3 に答える 3

5

admin/config/people/account/fields からユーザー エンティティ タイプにカスタムの「スタッフ ID」フィールドを追加できます (構成 -> 人 -> アカウント設定)。新しい整数フィールドを追加し、それをマークして登録フォームに表示するか、必須にすることができます。

フィールド値が一意であることを確認するには、カスタム モジュールを使用する必要があります。カスタム モジュールで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

Unique フィールド モジュールを試しましたか? ここで必要なことを確実に実行します。

于 2012-10-10T06:16:58.777 に答える
0

フィールド検証はトリックhttps://drupal.org/project/field_validationを行います。登録フォームでもフィールドごとに任意のルールを設定できます

于 2014-03-19T22:52:51.227 に答える