checkboxes и checked

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

Аватар пользователя livestd livestd 14 апреля 2013 в 10:09

Здравствуйте! Помогите разобраться плз. Вопрос по формам.
Есть чекбоксес, обрабатывается через аякс. когда мы ставим галочки по пунктам, в другом таком же чекбоксес должны отмечаться те-же пункты.
Уже как только не делал. #default_value новые переменные принимает, но checkboxes по сути построен из нескольких checkbox и атрибуты этих дочерних пунктов, а именно ['#attributes']['checked'] через аякс не меняются. Variable_set, variable_get показали, что в принципе все работает, но только при перезагрузке страницы.

<?phpfunction filterkvartira_form($form, &$form_state) {

$form['kolvokom'] = array(
    '#title' => '<h1>количество комнат</h1>',
    '#type' => 'checkboxes',
    '#options' => array(
        1 => 1,
        2 => 2,
        3 => 3,
        4 => 4,
        5 => 5,
        6 => 6,
        7 => 7,
      ),
    '#prefix' => '<div id = "form-kolvokom">',
    '#suffix' => '</div>',
    '#ajax' => array(
      'callback' => 'form_kolvokom',
      'wrapper' => 'form-kolvokomback',
      'method' => 'replace',
      'effect' => 'fade',
    ),
  );

unset($form['kolvokomback']);
if (isset($form_state['values']['kolvokom'])) {
    foreach ($form_state['values']['kolvokom'] as $key=>$value) {
    if ($value != 0) {$arguments[] = $key; variable_set('kkomb', $arguments);}
    }

}

$form['kolvokomback'] = array(
    '#title' => 'asd',
    '#type' => 'checkboxes',
    '#options' => array(
        1 => 1,
        2 => 2,
        3 => 3,
        4 => 4,
        5 => 5,
        6 => 6,
        7 => 7,
      ),
    '#prefix' => '<div id = "form-kolvokomback">',
    '#suffix' => '</div>',
  );

    $form['kolvokomback']['#default_value'] = $arguments;
$form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('сбросить'),
  );
  return $form;


function form_kolvokom($form, $form_state) {
  return $form['kolvokomback'];
}
function myfilters_form_alter(&$form, &$form_state) {
dpm($form);
$form['kolvokomback']['#default_value'] = variable_get('kkomb', array());
$tit=variable_get('kkomb', array());
$form['kolvokomback']['#title'] = $tit[0];

}?>

Комментарии

Аватар пользователя FORTIS FORTIS 14 апреля 2013 в 11:30

вы показали рабочий код с перезагрузкой страницы, вам то нужно чтобы помогли понять почему не работает в колбеке - тот код и покажите Smile и лучше минимальный без вставок лишних, сложно разобрать

Аватар пользователя livestd livestd 14 апреля 2013 в 21:20

этот код не перезагружает страницу целиком, лишь область второго чекбоксес. в любом случае проблема решена. До дочерних объектов все-таки можно добраться