2010-12-14 12 views
0

Ich versuche in Drupal 6.19, um die 'Benutzer/Passwort' Seite umleiten nach dem 'Standort ändern' dann User-Seite umleiten.drupal 6.19 Passwort zurücksetzen Umleitung

Ich verwende Thema Haken in den Vorprozess Funktion zu erhalten und darin habe ich die $ Variablen bearbeiten:

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

und danach habe ich verwenden drupal_render().

in der Drupal-debug sehe ich, dass die #action auf die ‚ändern Position‘ gesetzt ist, aber in der HTML-Tag noch Aktion Ich sehe = ‚user/password‘ und es umleiten mich nicht an die gewünschte Stelle.

Vielen Dank im Voraus

+0

Ich bin mir nicht sicher, aber sehen Sie, wenn Sie etwas wie '$ Variablen ändern können ['Form'] ['Redirect'] = 'Ort ändern';' – acm

Antwort

0

In Drupal Formen wie diese Arbeit: Der Benutzer fordert eine Seite das Formular enthält. Eine Funktion erstellt ein strukturiertes Array, aus dem das Formular besteht. Dieses Array wird in der Designebene gerendert. Wenn der Benutzer das Formular sendet, ruft Drupal dieselbe Routine auf, um das strukturierte Array erneut zu erstellen. Aber jetzt wird es verwendet, um Benutzereingaben zu validieren und zu verarbeiten. Wenn die Verarbeitungsroutine einen Pfad zurückgibt oder ?destination oder #redirect eingestellt ist, führt Drupal eine interne Umleitung aus. Wenn nicht, wird das gleiche Formular erneut angezeigt. Dann und nur dann wird Ihr Code in der Theming-Ebene ausgeführt. Es ist jedoch zu spät, um #redirect zu injizieren. Drupal wird es nicht mehr ansehen.

Das Ändern der #action ist ziemlich sinnlos, da dadurch die Benutzereingabe an eine URL gesendet wird, die Drupals Menüsystem übersetzt und Routinen aufruft, die die Eingabe weder erwarten noch verarbeiten.

Versuchen Sie das path redirect Modul. Wenn es nicht funktioniert, folgen Sie diesen instructions to create a custom module.

0

danke !!!

Ich löse es durch useing -> hook_form_FORM_ID_alter Funktion als wie .... mymodulename_form_FORM_ID_alter

als Säge hier link text

das ist, was ich tat, und es hat den Job für mich:

Funktion mymodulename_form_FORM_ID_alter (& $ form) { $ form ['# action'] = 'alter_location'; }

1

Dank dieser 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; 
    } 
    } 
} 

fand ich Lösung, die funktioniert.

Verwandte Themen