Проблема с form_submit.
Через ajax создаю чекбоксы выбранных вариантов элемента селект.
код:
$ik = !empty($form_state['values']['kolvokom']) ? $form_state['values']['kolvokom'] : 0;
$form['kolvokom'] = array(
'#title' => t('количество комнат'),
'#type' => 'select',
'#options' => array(
1 => t('1'),
2 => t('2'),
3 => t('3'),
4 => t('4'),
5 => t('5'),
6 => t('6'),
7 => t('7'),
),
'#ajax' => array(
'callback' => 'klass_check',
'wrapper' => 'klass-div'.$ik,
'method' => 'append',
'effect' => 'fade',
),
);
$ikid[] = $ik;
$form['kolkom'.$ik] = array(
'#type' => 'checkbox',
'#title' => $ik.'komnat',
'#attributes' => array('checked'),
'#value' => $ik,
'#prefix' => '<div id="klass-div'.$ik.'">',
'#suffix' => '</div>',
'#states' => array(
// Элемент будет показан тогда, когда чекбокс check_me будет нажат.
'visible' => array(
':input[name="kolkom0"]' => array('checked' => TRUE),
),
),
'#ajax' => array(
'callback' => 'klass_check1',
'wrapper' => 'klass-div'.$ikid,
'method' => 'replace',
'effect' => 'fade',
),
);
$form['kolkom_hide'] = array(
'#type' => 'hidden',
'#value' => $ik,
);
$form['kolkom'.$ik]['#attributes']= !empty($form_state['values']['kolkom'.$ik]) ? array('Checked') : array('Checked' => 1);
$form['kolkom'.$ik]['#attributes']= !empty($form_state['values']['kolvokom']) ? array('Checked' => 1) : array('Checked');
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Найти'),
);
return $form;
}
function klass_check($form, $form_state) {
return $form['kolkom'.$form_state['values']['kolvokom']];
}
function klass_check1($form, $form_state) {
return $form['kolkom'.$ik];
}
В поле "количество комнат" выбираем, например, 5. И появляется чекбокс со значением 5 и именем kolkom5. Затем выбираем в поле "количество комнат" 6 и соответсвенно появляется чекбокс со значением 6 и именем kolkom6. Но при нажатии кнопки "найти"(submit) в функцию filterkvartira_form_submit приходит только значение последнего добавленного элемента. т.е. 6
элемента 5 буд-то и вовсе никогда не существовало.
А задача - отправка данных о каждом выбранном элементе. Может кто сталкивался с подобной проблемой динамических форм? подскажите с решением пожалуйста.
Комментарии
Вам нужно создавать элементы внутри формы, а через колбэк возвращать только враппер куда они будут подставляться.