私はフォームを持っています:
//...
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Sumbit'),
);
このフォームが検証されて送信された後、ctoolsモーダルを表示する必要があります。
これはモーダルの私のhook_menuです:
$items['thankyou/%ctools_js'] = array(
'title' => 'Thank you',
'page arguments' => array(1),
'access callback' => TRUE,
'page callback' => 'thankyou_callback',
'type' => MENU_CALLBACK,
);
ctools_include('ajax');
ctools_include('modal');
ctools_modal_add_js();
コールバック関数:
function thankyou_callback($js = NULL) {
// Content that we place in the popup.
$popup_content = t('Thank you!');
if (!$js) {
return $popup_content;
}
ctools_include('modal');
ctools_include('ajax');
$output = array();
$output[] = ctools_modal_command_display(t('Greetings'), $popup_content);
print ajax_render($output);
drupal_exit();
}
私のフォーム送信:
function myform_submit($form, &$form_state) {
// ...
// show my modal here
modal.show(); // ???
}
次に、フォームの送信後にctoolsモーダルを表示するにはどうすればよいですか?
Ajaxコールバックではありません。
関数でポップアップにフォームを呼び出す必要があります ctools_modal_form_wrapper
エラーがあれば、メッセージがポップアップに表示されます。送信の成功を確認するには、ステートメントを使用する必要があります
if (!empty($form_state['executed'])) {
$output[] = ajax_command_replace('#modal-content', 'Thank you');
}
または、ajaxフォームを使用してajaxを呼び出すこともできます。
$form['markup'] = array(
'#markup' => '<div id="pop-up"></div>'
);
//You need markup for wrapper
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Sumbit'),
'#ajax' => array(
'wrapper' => 'pop-up',
'callback' => 'modal_form',
),
);
そして機能提出フォーム
function modal_form($form, &$form_state) {
//Process data when form submit
ctools_include('modal');
ctools_modal_add_js();
$commands = array();
$commands[] = ctools_modal_command_display('Form Submit', 'Say Thank You');
print ajax_render($commands);
exit;
}