国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

Drupal7 form表單二次開發要點與實例

2024-05-04 23:21:46
字體:
來源:轉載
供稿:網友

請記得收藏此文,在你進行Drupal 7 custom module時,經常會用到的form 表單的跳轉或重載。

主要匯總三個要點:

1.頁面提交后,經過#submit處理后,需要redirect 跳轉到另外一個頁面。
2.url路徑中存在destination參數時,頁面直接跳轉到destination所指的url,無法控制的問題。
3.form表單如何實現multiple steps forms 多個步驟,或者表單提交后,如何在表單獲取到提交上來的值。

一、Form 表單 redirect(跳轉)到另外一個頁面

$form_state['redirect'] 的值可以是字符串或者數組,值通過url后,生成跳轉地址。

復制代碼 代碼如下:

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

復制代碼 代碼如下:

$form_state['redirect'] = 'node/123'
//頁面將會跳轉到 node/123


如果不指定$form_state['redirect'] 的值,默認跳轉到當前頁面。drupal_goto(current_path(), array(‘query' => drupal_get_query_parameters())); API中是這樣執行的。

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

在drupal_goto 函數中,你可以看到如果url路徑中存在destination參數,頁面直接就到destination所指向的鏈接,導致某些表單下的多個按鈕提交后,本應redirect 跳轉的頁面也不盡不同。

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

復制代碼 代碼如下:

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


我采取的方法是,重新定義一個url并繼續傳遞destination,但是將$_GET中的destination刪除掉。但是一般還是會經常用到destination這個目的地的跳轉。

三、Form 表單 實現multiple steps多個步驟,Form表單重載,獲取Form提交的值

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

復制代碼 代碼如下:

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']這個值。

參考Drupal7 相關API函數:

drupal_redirect_form
drupal_goto
drupal_get_destination

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 明水县| 玛沁县| 静乐县| 云林县| 榕江县| 高邮市| 临武县| 卓尼县| 融水| 九龙城区| 白银市| 平潭县| 秀山| 丹寨县| 浦江县| 赤水市| 岳阳市| 西平县| 独山县| 宝坻区| 崇义县| 西乡县| 融水| 阿克陶县| 宝清县| 张北县| 通辽市| 黄浦区| 虎林市| 辛集市| 博野县| 盐亭县| 普陀区| 西林县| 武城县| 威信县| 大安市| 双辽市| 南安市| 樟树市| 突泉县|