need help on getting $form_state['values'] of forms added via ajax after submitted.

my codes as below,however it will not return any values of 'field_name' after submitted.Thanks in advance!


/**
 * hook_menu()
 */

function addstudent_menu(){
    $items= array();
    $items['user/%/add-students'] = array(
        'title'=>t('添加學生賬戶'),
        'page callback' =>'drupal_get_form',
        'page arguments' => array(addstudent_form),
        'access arguments' => array('create new users'),
        'type' => MENU_LOCAL_TASK,


    );

    return $items;

}


function addstudent_form($form,&$form_state){
    $form['#cache'] = TRUE;
    $dropdown_source = taxonomy_get_tree(3);
    if(!empty($dropdown_source)){
        $options = array('0'=> '--none--');

        foreach($dropdown_source as $item){ //we get all class term here
            $key = $item->tid;
            $value =$item->name;
            $options[$key] = $value;
        }
    }else {
        drupal_set_message(t('你还没有创建任何班级'),'error');
    }


    $form['addstudent_wrapper'] = array(
        '#title' => t('添加學生賬戶'),
        '#type' =>'fieldset',
        '#prefix'=>'
', '#suffix'=> '
', ); $form['addstudent_wrapper']['fields_head']['select_class'] = array( '#title'=> t('班级'), '#type' => 'select', '#options'=>$options ); $form['addstudent_wrapper']['fields_head']['student_qty'] = array( '#title' => t('人數'), '#type'=> 'textfield', '#size'=> 10, ); $form['addstudent_wrapper']['fields_head']['add'] = array( '#type' => 'submit', '#value'=> '確認', '#ajax' => array( 'callback' => 'addstudent_get_callback', 'wrapper' =>'fields_wrapper', ), ); $form['addstudent_wrapper']['fields_wrapper']=array( '#tree' => TRUE, ); return $form; } function addstudent_get_callback($form,&$form_state){ $form_state['rebulid'] = TRUE; $i = $form_state['values']['student_qty']; return $form['addstudent_wrapper']['fields_wrapper'] = _addstudent_fields($i); } function _addstudent_fields($i){ for($a=0;$a<$i;$a++){ $form[$a]['field_number'] = array( '#title' => '學號', '#markup'=>$a+1, '#tree' =>TRUE, '#type'=>'markup' ); $form[$a]['field_name'] = array( '#title' => '姓名', '#type'=> 'textfield', '#tree' => TRUE, '#parents' => array('field_name', $i, 'field_name'), '#size'=> 10, '#default_value'=>'' ); } $form['addstudent_wrapper']['submit'] = array( '#type' => 'submit', '#value' => 'Confirm', '#submit' => array('addstudent_form_submit'), ); return $form; } function addstudent_form_submit($form,&$form_state){ $values= $form_state['values']['field_name']; $a = array_values($values); foreach($a AS $b){ foreach($b as $c){ $r[] = $c; } } dsm($values); }

Comments

Jaypan’s picture

I didn't really look through your code, but maybe this tutorial I wrote the other day can help: http://www.jaypan.com/tutorial/drupal-7-ajax-driven-multi-step-forms-non...


The Drupal organization has shut down discussion on improvement of the forums: https://www.drupal.org/node/2536122

It's time to start a new forum somewhere else. The Drupal organization does not care about the forums.


nevets’s picture

The form function is responsible for adding all form elements, the ajax callback is responsible for return the changed elements. The developers examples module includes several form ajax examples.