Как открыть еще один модальный puppup при отправке и закрытии текущего модального всплывающего окна ctools в drupal 7 - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть одна форма, которая открывается в ctools ajax drupal 7. При нажатии кнопки сохранения этой формы она должна сохранить данные и закрыть всплывающее окно, а затем открыть одно новое всплывающее окно.Это новое всплывающее окно получает один идентификатор при открытии через ссылку.Как я могу это сделать.Я новичок в Drupal 7.

function save_and_open_popup2_callback($form, &$form_state)
        ctools_include('modal');
        ctools_modal_add_js();
   $output=ctools_modal_form_wrapper('my_game_result_form',$form_state,$ID);
        $commands = array();
        $commands[] = ctools_modal_command_display('Title', $output);
        print ajax_render($commands);
}

Я не могу получить $ ID или form_state внутри этого всплывающего окна.

$game_link = l('<div>New Game</div>', 'game/nojs', array('attributes' => array('class' => 'ctools-use-modal'), 'html' => TRUE));

$game_result_link = l('<div>Game 1</div>', 'game_result/nojs/'.$ID, array('attributes' => array('class' => 'ctools-use-modal'), 'html' => TRUE));

function my_game_menu() {
    $items = array();
     $items['game/%ctools_js'] = array(
        'page callback' => 'my_game_callback',
        'page arguments' => array(1),
        'access callback' => TRUE,
        'type' => MENU_CALLBACK
    );
    $items['game_result/%ctools_js/%'] = array(
        'page callback' => 'game_result_callback',
        'page arguments' => array(1,2),
        'access callback' => TRUE,
        'type' => MENU_CALLBACK
    );
}
function my_game_callback($ajax, $ID){

    if ($ajax){
        ctools_include('ajax');
        ctools_include('modal');
        $popup_title = "First popup";
        $form_state = array(
            'ajax' => TRUE,
            'title' => $popup_title
        );
        $output = ctools_modal_form_wrapper('my_game_form', $form_state);
        if (!empty($form_state['ajax_commands'])) {
            $output = $form_state['ajax_commands'];
        }
        print ajax_render($output);
    }else{
        return drupal_get_form('my_game_form');
    }
}

function my_game_form($form, $form_state) {

   $form['game'] = array(
        '#type' => 'submit',
        '#value' => t('Save and Open'),
        '#name' => 'game',
        '#disabled' => false,
        '#ajax' => array(
            'callback' => 'save_and_open_popup2_callback'
         ),
    );
}

function save_and_open_popup2_callback($form, &$form_state){
/**   process of save data ...*/
/**   Open another popup and close my_add_edit_form popup  */
}

function game_result_callback($ajax, $ID){
  /*** will open popup of game result thriugh call back same as in 
   "my_game_callback" ***/

    $output = ctools_modal_form_wrapper('my_game_result_form', $form_state);
    print ajax_render($output);
   ......
}

function my_game_result_form($form, $form_state){
   /*  form for my_game_result popup*/
}

В соответствии с кодом у меня есть два модальных, который открывается нассылка на сайт .Теперь я также хочу, чтобы второе модальное всплывающее окно "my_game_result_form" открывалось, когда я закрывал "my_game_form" с помощью обратного вызова ajax.Второе всплывающее окно должно получить $ ID, чтобы я мог получать данные на основе $ ID. Что я должен написать в save_and_open_popup2_callback (), что полностью соответствует моим требованиям.

...