2014-02-07 64 views
1

我打電話給網址爲http://mywebsite.org/param/ajax?ID=2的函數,該函數將返回一個html格式的表單,我在自定義模塊中的對應回調函數中使用以下函數。Drupal Ctools Modal Handling

$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函數顯示成功消息或失敗。有什麼方法可以使用模態或在稱爲模態的原始頁面上顯示輸出。

回答

0

調用ctools模式應該是這樣的:

$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輸出的問題。

0

會upvote sirBlond但我的聲望還沒有到那裏呢。我在使用IE8的模式窗口不能在成功的表單提交中關閉的情況下使用它。我需要在重定向之前添加此權限。

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

正是我所需要的。謝謝。

+0

即使您無法註冊,您仍然可以點擊複選標記並接受他們的回答。 – UtopiaLtd