フォームAPIを使用してカスタムフォームを作成しています。私のフォームは以下です。
function myform_form() {
$form = array();
$form['name'] = array(
'#type' => 'textfield',
'#title' => t(''),
'#required' => FALSE,
'#weight' => 2,
);
$form['telephone'] = array(
'#type' => 'textfield',
'#title' => t(''),
'#weight' => 3,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('submit'),
);
return $form;
}
function myform_submit($form, &$form_state) {
drupal_set_message(t('Your form has been submitted successfully.'));
$form_state['redirect'] = 'thankyou';
}
私はこのフォームをライトボックスに次のように表示するために使用しました:
<a href="/myform" rel="lightframe"> Form </a>
フォームがライトボックスに正しく表示されます。しかし、フォームを送信すると、ポップアップでthankyou
ページが開きます。
使った
<a href="/myform" rel="lightmodal"> Form </a>
フォームの検証でfalseが返されると、ポップアップイベントが閉じます。検証エラーが発生した場合、ポップアップを閉じたくありません。これをmyform_submit
関数に追加しました:
parent.Lightbox.end();
ただし、drupal_add_js
はmyform_submit
関数では機能しません。
更新しました :
お礼ページにパラメーターを送り、ページ読み込み時に追加しました。
<?php if($_GET['redirect']) { ?>
<script>
window.parent.location = "quick_request_quote";
</script>
<?php } ?>
リダイレクトしますが、ポップアップでコンテンツを数秒間表示し、その後リダイレクトします。フォームを送信した後も、ポップアップを1秒間表示したくない。
処理メッセージを示すメニューを作成してこれを解決し、次を使用してリダイレクトします。
window.parent.location = "thankyoupage";