Spiegazioni su ahah

2 contenuti / 0 new
Ultimo contenuto
Spiegazioni su ahah

Ho provato seguendo due tutoria ad usare ahah per creare due select. La seconda dovrebbe riempirsi a seconda dei risultati che ho ottenuto dalla prima. In tutti e due casi ad una prima vista sembrerebbe funzionare ma se genero un errore ad esempio perchè un campo è required quando modifico la prima select la seconda non si modifica più.

Vi posto uno dei due codici vi sarò grato per l'eternità se mi sapete dare una soluzione:)

<?php
 
function form_alimenti_crea()
{  ....
//recupero i tipi possibili  e li metto nell'array option 
  
$form['tipo_it'] = array(
   
'#type' => 'select',
   
'#title' => t('Scegli il tipo'),
   
'#options' =>$option ,
   
'#default_value' => $usage_default_value,
   
'#ahah' => array(
          
'path'    =>'sceglisottotipo/haha' ,
          
'wrapper' => 'sottotipo',
          
'method' => 'replace',
    ),
  );
  
$form['sottotipo_it'] = array(
   
'#type'          => 'select',
   
'#title'         => t('Seleziona sottotipo'),
   
'#description'   => t('Second selection'),
   
'#options'       =>array('0'=>'inserisci un sottotipo') ,
   
'#prefix'        => '<div id="sottotipo">',
   
'#suffix'        => '</div>',
  );
 
//////////////////////////////////////////////////////////////////////
 
......
//Creo un array $option3 per le check box che sono richieste
  
$form['tipodipasto'] = array
   (
  
'#type' => 'checkboxes',
  
'#title' => 'scegli un tipo di pasto',
  
'#options' =>$option3,
  
'#required'  => TRUE
   ); 
  
$form['submit'] = array(
  
'#type' => 'submit',
  
'#value' => t('invia'),
   );
  return
$form;
}
function
form_alimenti_crea_submit()
{
drupal_set_message("sono nel submit");
}
function
sceglisottotipo_js()
  {
// Recupera l'id del form
   
$form_build_id = $_POST['form_build_id'];
   
// imposta il form come non postato
   
$form_state = array('submitted' => FALSE);
   
// Carica il form dalla cache
   
$form = form_get_cache($form_build_id, $form_state);
   
$tipo_it = $_POST['tipo_it'];
    .....
//Creo l'array $option2 contenete i sottotipi
$form['sottotipo_it'] = array(
'#type' => 'select',
'#title' => t('sottotipo'),
'#options' => $option2,
);
// registriamo la cache aggiornata
form_set_cache($form_build_id, $form, $form_state);
// costruiamo il form
$form = form_builder($_POST['form_id'], $form, $form_state);
//Facciamo il rendering del campo select modello
$output .= drupal_render($form['sottotipo_it']);
// Passiamo la modifica
drupal_json(array('status' => TRUE, 'data' => $_POST['tipo'].$output));
exit;
}
 
?>

Se non seleziono le checkbox mi da l'erore e non mi ricarica più la seconda select.
Grazie a chiunque mi risponda

Mi sono risposto da solo dove ricostruisco la form manca

'#prefix'        => '<div id="sottotipo">',
    '#suffix'        => '</div>',