web-dev-qa-db-ja.com

マルチステップ登録フォームを送信した後にリダイレクトする方法は?

マルチステップ登録(2ステップ登録)を送信した後にリダイレクトしたいと思います。また、登録の完了後にdrupal Webサイトへの自動ログ記録を禁止します。

通常の方法を試しました

$form_state['redirect'] = 'url';  

しかし、それは機能しません。

次に、フォームアクションを確認しました。最初の手順を完了すると、指定したURLにも移動します。

ここにいくつかのコードをモジュールに挿入しました

function caubo_registration_form_alter(&$form, &$form_state, $form_id) {
if ($form_id != "user_register") return;

// custom codes
.....

if (isset($form_state['storage']['page']) && $form_state['storage']['page'] == 2) {
caubo_register_page_two($form, $form_state);    
return;
}

if (isset($form_state['storage']['page']) && $form_state['storage']['page'] == 3) {   
caubo_register_page_three($form, $form_state);
return;
}
}

Rules Module を試してメソッド here を実装しましたが、登録フォームに入力すると、ユーザーは自動的にdrupalウェブサイトにログインします、それをどのように防ぐのですか?

2
Ashok KS

まず、自分のhook_form_alter()実装で_$form_state['redirect']_の値を変更しているモジュールよりも重みが大きいモジュールがないことを確認します。 Xdebugでステップスルーするのは、これを行うのにかなり簡単な方法です。

それが原因ではない場合、drupal_goto()の呼び出しがプロセスのどこかで発生し、ページフローを中断しているようです。マルチステップフォームが最後のステップまで機能している場合は、独自のコードで実行することもできます。それ以外の場合は、フックの実装や、即時リダイレクトを含む可能性のあるその他のコード(別名_drupal_goto_)がトリガーされるかどうかを確認してください。

Develはリダイレクトページを表示することもできます 、これはこれをデバッグするときに役立つ機能です。

最後に、_$_REQUEST['destination']_がURLまたはその他の方法で設定されていないことを確認します。

1
wizonesolutions