web-dev-qa-db-ja.com

drupalフォームの管理オーバーレイに表示されるフォームの送信時に管理オーバーレイを閉じる方法

現在、drupalフォームを管理オーバーレイ経由で表示しています。フォームの処理を実行するためにjQueryを使用しています。

私が抱えている問題は、送信時にオーバーレイを閉じる方法ですか?現在、オーバーレイを閉じる唯一の方法は、右上にあるX(デフォルトのテーマに基づく)を押すことです。これは単なるです。

現在、フォームを変更して「overlay-close」を送信ボタンに追加できると思いますが、これを行う方法がわかりません。

Drupalのフォームのボタンにクラスを追加する方法はありますか?

乾杯、

ジェームズ

3
Metalskin

管理オーバーレイの経験はありませんが、あなたが書いている内容から、送信ボタンが押されたときに要素に「overlay-close」クラスを追加することを理解しています(管理オーバーレイ?)。そのために次のコードを適応させることができます。

$('#form_id').submit(function(){
  // Add "overlay-close" class to the proper element
  $('#element').addClass('overlay-close');
});
0
ovi

最も簡単な方法は、このコードを送信ハンドラーに配置することです。

if (module_exists('overlay') && overlay_get_mode() == 'child') {
  overlay_close_dialog();
  $form_state['redirect'] = FALSE;
}
0
Berend de Boer

古い質問ですが、答えを理解する前に、この質問を数回ググググしました。ボタンにクラスを追加するのではなく、 hook_form_FORM_ID_alter ()を使用して、ユーザーが送信ボタンをクリックしたときにコールバック関数を追加し、そのコールバック関数でオーバーレイで- overlay_close_dialog 関数。これは私のために働きました:

**
* Implementation of hook_form_FORM_ID_alter()
* *
**/
function mymodule_form_FORM_ID_alter(&$form, &$form_state) {
  $form['#submit'][] = 'mymodule_callback';
}

//callback after saving form to close overlay
function mymodule_callback(&$form, &$form_state) {
  // Form API will re-render the current page and pass the redirect information to the overlay JavaScript 
  overlay_close_dialog($url, $url_settings);
  // stay on the same page after all submit callbacks have been processed.
  $form_state['redirect'] = FALSE;
}

Overlay_close_dialogオプションの詳細については、 https://api.acquia.com/api/drupal/modules!overlay!overlay.module/function/overlay_form_submit/7 を参照してください

0
kbrinner