2

ユーザーがアカウントを作成した後、特定のページに転送しようとしていますが、そこにアクセスしてもログインしていません。

function mymodule_user_insert(&$edit, $account, $category) {
  drupal_goto("node/3");
}

アカウントが作成された後、ユーザーが確実にログインできるように何かを追加する必要がありますか?

4

2 に答える 2

2

hook_user_insert()は、ユーザーアカウントがデータベーステーブルに挿入された後に呼び出されます。これは、管理者ユーザーの1人が管理ページからユーザーアカウントを作成するとき、またはモジュールがプログラムでユーザーアカウントを作成するときに発生します。
フックの目的は、モジュールがユーザーアカウントに関連付けるカスタムデータを保存することです。その場合の呼び出しdrupal_goto()は間違っています。

登録後にユーザーをリダイレクトするには、次のようなコードを実装できます。(「mymodule」はモジュールの短縮名の単なる例です。使用/作成しているモジュールの短縮名に変更してください。)

function mymodule_form_ user_register_form_alter(&$form, &$form_state) {
  // Add a form submission handler to the registration form.
  $form['#submit'][] = 'mymodule_user_register_submit';
}

function mymodule_user_register_submit($form, &$form_state) {
  $form_state['redirect'] = 'where you want to redirect the user';
}

このコードが実行された場合でも、ユーザーはログインする必要があり、(サイトの設定によっては)Drupalがユーザーに送信する電子メールを最初に受信する必要がある場合があります。これは、報告された電子メールアドレスを最初に確認するように設定されている場合です。登録ユーザーによる。

ログイン後にユーザーをリダイレクトする場合は、hook_user_login()を実装する必要がありますが、ユーザーは最初にログインする必要があります。

于 2011-08-25T20:30:37.503 に答える
0

これは、データベースへのカスタム追加を投稿するためにのみ使用する必要があるため、これを行う場所ではありません。こちらのドキュメントを参照してください

これを行う最も簡単な方法は、ログイン先モジュールを使用することです。これは、すでに試行およびテストされており、目的の処理を実行するためです。彼らがどのようにそれを行うかを見るには、ソースを覗いてみてください。

http://drupal.org/project/login_destination

または、コードをに追加する必要がありますhook_user_login

于 2011-08-25T20:30:37.323 に答える