現在、drupalフォームを管理オーバーレイ経由で表示しています。フォームの処理を実行するためにjQueryを使用しています。
私が抱えている問題は、送信時にオーバーレイを閉じる方法ですか?現在、オーバーレイを閉じる唯一の方法は、右上にあるX(デフォルトのテーマに基づく)を押すことです。これは単なるです。
現在、フォームを変更して「overlay-close」を送信ボタンに追加できると思いますが、これを行う方法がわかりません。
Drupalのフォームのボタンにクラスを追加する方法はありますか?
乾杯、
ジェームズ
管理オーバーレイの経験はありませんが、あなたが書いている内容から、送信ボタンが押されたときに要素に「overlay-close」クラスを追加することを理解しています(管理オーバーレイ?)。そのために次のコードを適応させることができます。
$('#form_id').submit(function(){
// Add "overlay-close" class to the proper element
$('#element').addClass('overlay-close');
});
最も簡単な方法は、このコードを送信ハンドラーに配置することです。
if (module_exists('overlay') && overlay_get_mode() == 'child') {
overlay_close_dialog();
$form_state['redirect'] = FALSE;
}
古い質問ですが、答えを理解する前に、この質問を数回ググググしました。ボタンにクラスを追加するのではなく、 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 を参照してください