2010-12-14 64 views
0

我試圖在drupal 6.19中重定向'用戶名/密碼'頁面後提交到'改變位置',然後用戶頁面。drupal 6.19密碼重置重定向

我正在使用的主題掛鉤來獲得預處理功能和它,我編輯$變量:

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

,之後我用drupal_render()。

在drupal調試我發現#action被設置爲'alter location',但在 html標籤中,我仍然看到action ='user/password',並且它不會將我重定向到所需的位置。

在此先感謝

+0

我不確定它,但看看你是否可以改變'$ variables ['form'] ['redirect'] ='改變位置';' – acm 2010-12-14 10:39:58

回答

0

在Drupal的工作方式是這樣的:用戶請求包含表單的頁面。一個函數創建一個結構化數組,構成該表單。該數組在主題圖層中呈現。如果用戶提交表單,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

這是我做過什麼,它做的工作對我來說:

功能mymodulename_form_FORM_ID_alter(& $ form){ $ 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; 
    } 
    } 
} 

我發現解決方案的工作原理。