3

登録にフィールドを追加できます。私が知る必要があるのは、その入力を取得してdrupalのユーザーテーブルに挿入するためにどのような手順を踏む必要があるかということです。以下のコードは私のモジュールにあり、フォームにフィールドを追加するだけですが、送信されたときはデータに対して何もしません。

function perscriptions_user($op, &$edit, &$account, $category = NULL){
  if ($op == 'register') {
    $form['surgery_address'] = array (
      '#type' => 'textarea',
      '#title' => t('Surgery Address'),
      '#required' => TRUE,
    );      

     return $form;     
  }

  if ($op == 'update') {
    // …
  }
}
4

1 に答える 1

7

hook_user() ドキュメントで報告されているとおり:

$op どのようなアクションが実行されているか。可能な値 (アルファベット順):
- "insert": ユーザー アカウントが追加されています。モジュールは、ユーザー オブジェクトへのカスタム追加をデータベースに保存し、保存されたフィールドを $edit で NULL に設定する必要があります。
- "update": ユーザー アカウントが変更されています。モジュールは、ユーザー オブジェクトへのカスタム追加をデータベースに保存し、保存されたフィールドを $edit で NULL に設定する必要があります。
- "validate": ユーザー アカウントが変更されようとしています。モジュールは、ユーザー オブジェクトへのカスタム追加を検証し、必要に応じてエラーを登録する必要があります。

モジュールは、独自のデータベース テーブルを に作成する必要がありますhook_install()

hook_user()たとえば、次のコードで実装できます。

function perscriptions_user($op, &$edit, &$account, $category = NULL){
  if ($op == 'register' || ($op == 'form' && $category = 'account')) {
    $form['surgery_address'] = array (
      '#type' => 'textarea',
      '#title' => t('Surgery Address'),
      '#required' => TRUE,
    );

    return $form;     
  }

  if ($op == 'insert' || $op == 'update') {
    prescriptions_save_user_profile($account->uid, $edit['surgery_address']);
  }
  if ($op == 'validate' && $category == 'account') {
    // Verify the entered values are valid.
    // In this example, the value is contained in $edit['surgery_address'].
  }
}

prescriptions_save_user_profile()ユーザープロファイル値をデータベースに保存する関数です。コードは、カテゴリをチェックして、ユーザー プロファイル編集フォームに表示されるすべてのタブで同じフォーム フィールドを表示しないようにします。

于 2010-07-27T14:51:38.360 に答える