1

URL http://mywebsite.org/param/ajax?ID=2で関数を呼び出しています。これは、カスタム モジュールの対応するコールバック関数で次の関数を使用する html のフォームを返します。

$form_state = array(
  'ajax' => TRUE,
  'title' => t("Edit : $ID"),
);
$output = ctools_modal_form_wrapper('form_fn', $form_state);
print ajax_render($output);
drupal_exit();

この出力を使用して、Twitter ブートストラップ モーダル内にフォームを作成します。問題は、送信時に、処理できない ajax 出力が再度表示されることです。form_submit 関数に基づいて成功メッセージまたは失敗メッセージを表示したいと考えています。モーダルを使用して、またはモーダルを呼び出した元のページに出力を表示する方法はありますか。

4

2 に答える 2

0

ctools modal の呼び出しは次のようになります。

  $output = ctools_modal_form_wrapper($form_name, $form_state);
  if(!empty($form_state['executed'])) {
    $output = array();
    $output[] = ctools_modal_command_display(t('Successful message title'), 'Successful message body');
    $output[] = ctools_ajax_command_reload();
  }
  print ajax_render($output);
  exit;

のチェックをお忘れなく$form_state['executed']

また、ctools_ajax_command_reload()これを使用すると、モーダルのコンテンツがリロードされ、別の ajax 出力の問題が修正されるはずです。

于 2014-07-23T12:03:34.513 に答える
0

sirBlondに賛成票を投じますが、私の評判はまだそこまでありません. これは、フォームの送信が成功したときに IE8 でモーダル ウィンドウが閉じない場合に使用しました。リダイレクトの直前にこれを追加する必要がありました。

$commands[] = ctools_ajax_command_reload()     
$commands[] = ctools_ajax_command_redirect($path, 0, $options);

まさに私が必要としていたものでした。ありがとう。

于 2014-09-17T18:53:04.327 に答える