Ajax добавление полей в формы

Главные вкладки

Аватар пользователя livestd livestd 5 октября 2012 в 18:11

Проблема с form_submit.
Через ajax создаю чекбоксы выбранных вариантов элемента селект.
код:

function filterkvartira_form($form, &$form_state) {
$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 буд-то и вовсе никогда не существовало.
А задача - отправка данных о каждом выбранном элементе. Может кто сталкивался с подобной проблемой динамических форм? подскажите с решением пожалуйста.

Комментарии

Аватар пользователя divined divined 5 октября 2012 в 18:25

Вам нужно создавать элементы внутри формы, а через колбэк возвращать только враппер куда они будут подставляться.