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...

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.