forms – Formulario de carga de Drupal con devolución de llamada ajax en Bootstrap modal

Pregunta:

Necesito cargar un formulario en un 'diálogo modal de arranque' que enviará datos a través de la devolución de llamada ajax a la función de devolución de llamada.

El formulario se muestra correctamente cuando se inicia el diálogo modal:

<a data-toggle='modal' href='?q=document/share' data-target='#Modalshare' class='ModalTrigger'>
 <div class='' style='float:right;'><span class=''><span title='' class='glyphicon glyphicon-share-alt'></span></span></div>
<a/>

El menú 'documento / compartir llama a la función' modal_share () 'que muestra el contenido modal

<div>...
content
...<div>

Dentro de esta función modal_share (), se llama a un formulario para renderizar:

function modal_share($fid) {

$f = drupal_get_form('modal_share_form',$fid);
....
....
echo <div> .... ".drupal_render($f) .".....</div>

}

Hasta ahora todo bien y el modal se genera correctamente con el formulario 'modal_share_form' según la estructura a continuación:

function modal_share_form($form,&$form_state,$fid) {
form['share_list'] = array(
  '#type' => 'select',
  '#multiple' => TRUE,
  '#options' => $option ,
  '#title' => t(""),
  '#description' => "",
  '#required' => false,
  '#default_value' => $default

);

$form['share'] = array (
        '#type' => 'button',
        '#value' => "<span class='glyphicon glyphicon-share-alt'></span><span id=''> ".t('record')."</span>",
        '#ajax' => array(
          'callback' => "modal_share_form_submit", 
          'wrapper' => 'shareMessage',
          'effect' => 'fade',
          'method'=>'html'
        ),

        '#id' => 'modalsharebutton',
);
return $form;
}

Ahora el problema es que la función #ajax en el botón no es renderizada por drupal como debería.

la representación html es:

<button id="modalsharebutton" class="btn btn-primary form-submit" type="button" value="<span class='glyphicon glyphicon-share-alt'></span><span id=''>record</span>" name="op">

sin la clase "procesada ajax" adjunta

El caso es que si cargo el formulario en una página principal, la función ajax se representa correctamente.

Entonces, mi conclusión es que al construir el formulario para modal, no está pasando por el proceso de construcción de ajax adecuado …

Pero no veo la solución.

Gracias por la ayuda.

Respuesta:

Resolví este problema de manera diferente agregando '#attribute' con evento …

$form['share'] = array(
        '#type' => 'button',
        '#value' => "<span class='glyphicon glyphicon-share-alt'></span><span id=''> " . t('Record') . "</span>",
        '#ajax' => array(
          'callback' => "modal_share_form_submit", 
          'wrapper' => 'shareMessage',
          'effect' => 'fade',
          'method' => 'html'
        ),

        '#id' => 'modalsharebutton',
        '#attributes' => array('onclick' => "share_submit($fid);"),

);

Gracias.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım