I have just created a new content type called pieza_musical. What I just want to do is update one select element via Ajax depending on another select choice, a dependant select.
I’m altering the form_node_add using hook_form_alter to inject the #ajax element and replace in the wrapper the previous select rendered by default in the content type.
Everything is working except when it comes to save. I think, due I’m replacing the select via $ajax[‘method’] = replace, maybe some token is missing and the content type can’t be saved.
It show these error messages:
An illegal choice has been detected. Please contact the site administrator.
Género: illegal value.
This is my simple code:
function seven_form_pieza_musical_node_form_alter(&$form, &$form_state, $form_id) { $generos = taxonomy_get_tree(2,0,1); $values_generos = array(); foreach ($generos as $genero) { $values_generos[$genero->tid] = $genero->name; } $form['field_genero']['und']['#options'] = $values_generos; // adds ajax $form['field_genero']['und']['#ajax'] = array( 'event' => 'change', 'wrapper' => 'edit-field-subgenero-und', 'callback' => 'subgenero_ajax_callback', ); } function subgenero_ajax_callback($form, &$form_state) { $generoId = $form_state['values']['field_genero']['und'][0]['value']; $cat = taxonomy_term_load($generoId); $vid = $cat->vid; $generos = taxonomy_get_tree($vid,$generoId,1); $options = array(); foreach ($generos as $genero) { $options[$genero->tid] = $genero->name; } $form['field_subgenero_ajax'] = array( '#type' => 'select', '#id' => 'edit-field-subgenero-und', '#required' => TRUE, '#name' => 'field_subgenero[und]', '#options' => $options, ); return $form['field_subgenero_ajax']; }
- Is it possible to make this is a content type?
- Should I create a new entity just for this little purpose?
- Should I create a custom field?