溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Drupal7 form表單二次開(kāi)發(fā)要點(diǎn)有哪些

發(fā)布時(shí)間:2021-10-08 13:38:26 來(lái)源:億速云 閱讀:110 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Drupal7 form表單二次開(kāi)發(fā)要點(diǎn)有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Drupal7 form表單二次開(kāi)發(fā)要點(diǎn)有哪些”吧!

主要匯總?cè)齻€(gè)要點(diǎn):

1.頁(yè)面提交后,經(jīng)過(guò)#submit處理后,需要redirect 跳轉(zhuǎn)到另外一個(gè)頁(yè)面。
2.url路徑中存在destination參數(shù)時(shí),頁(yè)面直接跳轉(zhuǎn)到destination所指的url,無(wú)法控制的問(wèn)題。
3.form表單如何實(shí)現(xiàn)multiple steps forms 多個(gè)步驟,或者表單提交后,如何在表單獲取到提交上來(lái)的值。

一、Form 表單 redirect(跳轉(zhuǎn))到另外一個(gè)頁(yè)面

$form_state['redirect'] 的值可以是字符串或者數(shù)組,值通過(guò)url后,生成跳轉(zhuǎn)地址。

復(fù)制代碼 代碼如下:

$form_state['redirect'] = array(
  'node/123',
  array(
    'query' => array(
      'foo' => 'bar',
    ),
    'fragment' => 'baz',
}
//頁(yè)面將會(huì)跳轉(zhuǎn)到 node/123?foo=bar#baz

復(fù)制代碼 代碼如下:

$form_state['redirect'] = 'node/123'
//頁(yè)面將會(huì)跳轉(zhuǎn)到 node/123


如果不指定$form_state['redirect'] 的值,默認(rèn)跳轉(zhuǎn)到當(dāng)前頁(yè)面。drupal_goto(current_path(), array(‘query' => drupal_get_query_parameters())); API中是這樣執(zhí)行的。

二、Form 表單 destination(目的地)被指定時(shí)也可以改變跳轉(zhuǎn)的地址

在drupal_goto 函數(shù)中,你可以看到如果url路徑中存在destination參數(shù),頁(yè)面直接就到destination所指向的鏈接,導(dǎo)致某些表單下的多個(gè)按鈕提交后,本應(yīng)redirect 跳轉(zhuǎn)的頁(yè)面也不盡不同。

于是在form的#submit 函數(shù)中,某些操作時(shí)可以直接刪除掉destination。

復(fù)制代碼 代碼如下:

if (isset($_GET['destination'])) {
  $form_state['redirect'] = array('next_step_page_url', array('query' => drupal_get_destination()));
  unset($_GET['destination']);
}


我采取的方法是,重新定義一個(gè)url并繼續(xù)傳遞destination,但是將$_GET中的destination刪除掉。但是一般還是會(huì)經(jīng)常用到destination這個(gè)目的地的跳轉(zhuǎn)。

三、Form 表單 實(shí)現(xiàn)multiple steps多個(gè)步驟,F(xiàn)orm表單重載,獲取Form提交的值

這些問(wèn)題其實(shí)歸根到底都是一個(gè)意思,就是讓表單繼續(xù)提交下去。而不是刷新頁(yè)面。只需在form 表單的 #submit 函數(shù)中 執(zhí)行以下代碼:

復(fù)制代碼 代碼如下:

if ($form_state['values']['op'] == t("Next Step")) {
  $form_state['rebuild'] = TRUE;
  $form_state['storage']['users'] = $form_state['values']['users'];
}


在form的define定義中即可獲取到$form_state['storage']['users']這個(gè)值。

參考Drupal7 相關(guān)API函數(shù):

drupal_redirect_form
drupal_goto
drupal_get_destination

感謝各位的閱讀,以上就是“Drupal7 form表單二次開(kāi)發(fā)要點(diǎn)有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Drupal7 form表單二次開(kāi)發(fā)要點(diǎn)有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI