web-dev-qa-db-ja.com

ユーザー登録フォームでカスタムフォームリダイレクトを実行するにはどうすればよいですか?

ユーザー登録フォームにカスタム送信機能を追加しました。ユーザープロファイルの編集にリダイレクトできるようにしたい。作成しようとしているレコードのuidを取得するにはどうすればよいですか?グローバル$ userは機能しません:

function my_user_register_submit ($form, &$form_state) {
  global $user;
  $form_state['redirect'] = 'user/' . $user->uid . '/edit?registration=1&destination=blahblah'; 
}

編集:

私の使用例は次のとおりです。登録後、ユーザーを「プロファイルの編集」ページにリダイレクトして、残りのプロファイルフィールドに入力します。彼らがそれを「スキップ」するか、フォームを完了すると、彼らは彼らのプロフィールページに行きます。ただし、?destinationパラメーターが登録フォームに渡されると、その値を「プロファイルの編集」ページに伝え、完了したらユーザーをその宛先ページに誘導します。

4
uwe

ログインtobogganがuser_register_submit()を実装する方法を見てください: logintoboggan_user_register_submit() 。後でuidを取得するために、最初に$userを保存します。

function my_user_register_submit($form, &$form_state) {
  //Save $user
  $account = $form['#user'];
  $edit = array_intersect_key((array) $account, $form_state['values']);
  $account = user_save($account, $edit);
  $form_state['user'] = $account;
  $form_state['values']['uid'] = $account->uid;

  //Make the redirection
  $form_state['redirect'] = 'user/' . $account->uid . '/edit?registration=1&destination=blahblah'; 
}

ログインtobogganの機能で他のすべての部分をチェックして、重要な部分を忘れないようにしてください。

3
tostinni

Login Toboggan には、このオプションがあり、リダイレクトURLの引数として%uidを使用できます。

文字通り、/ user /!uid/editと入力するテキストボックス

また、チェックアウトする価値のある素晴らしい機能のホストがたくさんあります:)

5
Chapabu

フォームを変更するよりも、Rulesモジュールを使用する方が良い方法だと思います。

1
j2r