ホームページ  >  記事  >  バックエンド開発  >  Drupal7 form_PHPチュートリアルの二次開発のポイントと事例

Drupal7 form_PHPチュートリアルの二次開発のポイントと事例

WBOY
WBOYオリジナル
2016-07-13 10:37:01902ブラウズ

Drupal 7 カスタム モジュールを開発するときは、フォーム ジャンプやリロードを頻繁に使用することになります。

主に3つの重要なポイントを要約します:

1. ページが送信された後、#submit 処理の後、別のページにリダイレクトする必要があります。
2. URL パスに宛先パラメータがある場合、ページは宛先が指す URL に直接ジャンプします。これは制御不能な問題です。
3. 複数のステップのフォームを実装する方法、またはフォームの送信後にフォーム内の送信された値を取得する方法。

1. フォームを別のページにリダイレクト (ジャンプ) します

$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 での実行方法です。

2.フォームフォームの宛先を指定するとジャンプアドレスも変更できます

drupal_goto 関数では、URL パスに宛先パラメータがある場合、ページは宛先が指すリンクに直接移動することがわかります。その結果、一部のフォームの下にある複数のボタンが送信された後、ページが送信されます。リダイレクトする必要があるものも無限に異なります。

そのため、フォームの #submit 関数では、特定の操作中に宛先を直接削除できます。

コードをコピー コードは次のとおりです:
if (isset($_GET['destination'])) {
$form_state['redirect'] = array('next_step_page_url', array('query' => drupal_get_destination()));
unset($_GET['destination']);
}

私がとった方法は、URL を再定義して宛先を渡し続けますが、$_GET で宛先を削除することでした。ただし一般的にはデスティネーションジャンプがよく使われます。

3. フォームフォームは複数のステップを実装し、フォームフォームをリロードし、フォームによって送信された値を取得します

これらの質問はすべて、最終的には同じ意味を持ち、フォームの送信を継続できるようになります。ページを更新する代わりに。フォームの #submit 関数で次のコードを実行するだけです:

コードをコピー コードは次のとおりです:
if ($form_state['values']['op'] == t("次のステップ")) {
$form_state['rebuild'] = TRUE;
$form_state['storage']['users'] = $form_state['values']['users'];
}

定義定義で $form_state['storage']['users を取得できます形式 '] のこの値。

Drupal7関連のAPI関数を参照してください:

drupal_redirect_form
drupal_goto
drupal_get_destination

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/736823.html技術記事 Drupal 7 カスタム モジュールを開発するときは、フォーム ジャンプやリロードを頻繁に使用します。この記事をブックマークしてください。 主に3つの要点をまとめます: 1. ページが送信された後、#submit によって処理されます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。