2010-12-14 6 views
0

私はdrupal 6.19で「ユーザー/パスワード」ページをリダイレクトしてから、「場所を変更」してからユーザーページにリダイレクトしようとしました。drupal 6.19パスワードリセットリダイレクト

私は、前処理機能を取得するには、テーマのフックで使用していますが、その中に私が通り$変数を編集します。

$variables['form']['#action'] = 'alter location'; 

その後、私は(drupal_renderを使用します)。

drupalのデバッグでは、#actionが 'alter location'に設定されていますが、 htmlタグにはまだaction = 'user/password'が表示され、目的の場所にリダイレクトされません。 Drupalのフォームで事前

+0

私はそれについてはわかりませんが、あなたが '$ variable ['form'] ['redirect'] = 'alter location';' – acm

答えて

0

おかげでこのように動作します。ユーザーは、フォームを含むページを要求します。関数は、そのフォームを構成する構造化配列を作成します。この配列は、テーマレイヤーでレンダリングされます。ユーザーがフォームを送信すると、Drupalは同じルーチンを呼び出して構造化配列を再構築します。しかし、今は、ユーザー入力の検証と処理に使用されています。処理ルーチンがパスを返すか、?destinationまたは#redirectが設定されている場合、Drupalは内部リダイレクトを行います。そうでない場合、同じフォームが再び表示されます。次に、テーマレイヤー内のコードが実行されます。しかし、それは遅くまで#redirectを注射することです。 Drupalはもうそれを見ないでしょう。

#actionを変更すると、ユーザー入力がDrupalのメニューシステムが変換して入力を処理しないルーチンを呼び出すURLに送信されるので、無意味です。

path redirectモジュールをお試しください。動作しない場合は、instructions to create a custom moduleに従ってください。

0

ありがとうございます!

機能:のこぎりなどなど> hook_form_FORM_ID_alter機能を.... mymodulename_form_FORM_ID_alter

ここlink text

これは私がやったことであり、それは私のために仕事をした -

私はuseingによってそれを解決mymodulename_form_FORM_ID_alter(& $形式){ $ form ['#action'] = 'alter_location'; }

1

このcomment

/** 
* Implementation of hook_form_alter(). 
*/ 
function jm_form_alter(&$form, $form_state, $form_id) { 
    if (isset($form['#node']) && $form['#node']->type .'_node_form' == $form_id) { 
    $form['buttons']['submit']['#submit'][] = 'jm_redirect_handler'; 
    } 
} 

/** 
* Attaches the redirect to the submitted form. 
* 
* @param unknown_type $form 
* @param unknown_type $form_state 
* @return unknown 
*/ 
function jm_redirect_handler($form, &$form_state) { 
    if ($form_state['nid']) { 
    // reloading as I do not know the node type context. You probably do not need to :), just set the redirect using $form_state['nid'] 
    $node = node_load(array('nid' => $form_state['nid'])); 
    switch($node->type) { 
     case 'project': 
     $form_state['redirect'] = 'projects/'. $node->nid; 
    } 
    } 
} 

のおかげで私の作品解決策を見つけました。