2012-10-11 39 views
0

我已經創建了一個包含hook_submit函數的自定義模塊。現在是否可以加載另一個頁面/表單而不必進行重定向?Drupal 6 - 加載沒有重定向的其他內容

原因是在提交函數的邏輯範圍內,有一些變量我想要傳遞到另一個頁面,但是它包含複雜的數據結構(對象,數組等),它們不適合post/get數據。

謝謝

+0

使用jquery的加載函數來加載另一個頁面/表單。 –

+0

不會給我同樣的問題,無法通過我的PHP變量? – neolaser

+0

你可以通過像'index.php?id = 3'這樣的URL傳遞你的變量。 –

回答

0

hook_submit()是表單處理鏈的尾端。一旦它完成它的職責,你有兩個選擇:重定向(通過drupal_goto()或通過返回$ form [「#redirect'])到另一個頁面或什麼也不做,在這種情況下,你點擊提交按鈕的頁面將是重新加載

您有幾個選擇可以將數據傳遞到重定向目標$ _SESSION和最常用的數據庫,還可以選擇在JavaScript中的Drupal.settings對象中設置複雜的數據值,但在這種情況下,如果您的最終目標是通過PHP解析這些信息,那麼您的收購成本並不高。

沒有關於您的最終目標是什麼的具體信息,但很難提供具體的建議,但是假設使用$ _SESSION或數據庫作爲一個緩存不是你的選擇,你可能會考慮查看核心FAPI和ctools各自實現的多部分表單以獲取更多指導。

+1

感謝您的答案。我希望情況並非如此,但我會調查$ _SESSION。再次感謝 – neolaser

+1

另一種選擇是通過ajax處理表單「提交」操作(D6中的ahah,D7中的ajax),然後在呈現時將表單「交換」內容。希望這可以幫助。 –

0

在Drupal中,您可以確定表單將被提交的路徑。爲此,您可以使用

$form['#action'] = url("<another page>") ; 

您的表單中,並提交後,它會帶你到另一個頁面,你仍然會得到表單中的所有職務值。使用$_POST['<element_name>']作進一步的檢索後值。

希望這會有所幫助。

+0

感謝您的回答。我的問題是,當表單提交時,我建立了一個複雜的數據類型,這對POST/GET數據來說太大了。對不起,如果我沒有明確表示謝謝你的答案:) – neolaser

相關問題