Illegal chois | Form api D7

3 contenuti / 0 new
Ultimo contenuto
Illegal chois | Form api D7

Ciao a tutti,
c'è un problema che mi assilla da diversi giorni e non ne vengo a capo...

In un modulo personale ho creato un form:

<?php
[...]
$form['projectClient'] = array(
 
'#title' => 'Project',
 
'#type' => 'fieldset',
);
$form['projectClient']['userList'] = array(
 
'#type' => 'select',
 
'#title' => 'Client',
 
'#required' => TRUE,
 
'#options' => $clients,
 
'#default_value' => isset($form['#node']->custom_field['client']) ? $form['#node']->custom_field['client'] : '',
 
'#ajax' => array(
   
'callback' => 'ajax_select_project',
   
'wrapper' => 'project-div',
   
'method' => 'replace',
   
'effect' => 'fade',
   
'progress' => array(
     
'message' => NULL,
     
'type' => 'throbber',
    ),
  ),
 
'#empty_option' => t('- Select -'),
);
$form['projectClient']['project'] = array(
 
'#title' => 'Project',
 
'#type' => 'select',
 
'#options' => array(10 => 'Prova 1', 20 => 'Prova 2'),
 
'#default_value' => isset($form['#node']->custom_field['project']) ? $form['#node']->custom_field['project'] : '',
 
'#prefix' => '<div id="project-div">',
 
'#suffix' => '</div>',
 
'#empty_option' => t('- Select -'),
);
 
?>

E fin qui tutto bene...
Poi ajax richiama questa funzione

<?php
function ajax_select_project($form, $form_state) {
 
$resultTask = db_query("SELECT n.nid, n.title FROM {node} n LEFT JOIN {pms_project} p ON n.nid = p.nid WHERE n.type = 'pms_project' AND p.client = :client", array(':client' => $form['projectClient']['userList']['#value']));
  foreach(
$resultTask as $task) {
   
$allTask[$task->nid] = $task->title;
  }
 
$form['projectClient']['project']['#options'] = $allTask;
  return
$form['projectClient']['project'];
}
?>

E anche qui tutto bene ma quando faccio il submit mi da Illegal chois e non capisco perchè...
Ho notato però che il campo project come ID ha edit-project e ogni volta che cambio il campo client l'id si rinomina con un numero sequenziale... edit-project--1, edit-project--2 ... Può essere utile?

L'errore mi viene anche se cambio il client senza dare il submit.

Ciao
Grazie

Risolto usando un altro sistema che mi sembra molto più ordinato http://stackoverflow.com/questions/5158744/drupal-7-best-practice-for-a-...

Ciao
Ioris

Di solito, "Illegal Choice" appare quando con FAPI aggiungi degli elementi al form e non li registri. Quando invii un form, FAPI controlla che i valori corrispondano ai campi inizialmente impostati nel form.