AHAH wrapper használata

compo75 képe

Sziasztok,

Általában nem szeretem a közösséget "hülye" kérdésekkel traktálni, de egy problémára sehogy sem találok megoldást egyelőre.

Az AHAH technológia felhasználásával lehetséges-e megváltoztatni egyszerre több űrlapelemet?

Példa: 2 elem egy formról, egy select és egy checkboxes.

$form['search']['search_element']['select3'] = array(
    '#type' => 'select',
    '#default_value' => variable_get('select3', 2),
    '#options' => $search_type,
  );
 
$form['search']['communicator']['databases'] = array(
    '#type' => 'checkboxes',
    '#options' => $databases_names,
    '#default_value' => array_keys($databases_names),
    '#tree' => TRUE,
    '#prefix' => '<div class="my_checkboxes">',
    '#suffix' => '</div>',
    '#ahah' => array(
      'event' => 'change',
      'path' => 'eSearch/stuff_js',
      'wrapper' => 'edit-search-search-element-select3-wrapper',
      'method' => 'replace',
      'effect' => 'slide',
      'progress' => array(
        'type' => 'throbber',
      )
    ),
  );

A http://kybest.hu/blog/alapszintu-ahah-drupal-6-alatt linken - köszönet érte a szerzőnek - található példának köszönhetően egy elem megváltoztatásával nincs gondom. De ezt továbbvíve szeretném a következőt. Ha a checkboxes egy eleme van már csak kiválasztva, akkor egyszerre szeretném nem csak a 'select3' elemet, de a 'select1' és 'select2' elemeket is megváltoztatni. Az #ahah elemnek meg lehet valahogyan adni a wrapper-jében több elemet is, vagy teljesen más irányból kell elindulni?

Előre is köszönet a válaszokért.

Drupal verzió: 
Lavjaman képe

csináltam: Callback-en, újraépítettem a form-ot. Példa *ezt háromnegyed éve csináltam kb*: van 2 select-ed *itt csak 1-et választhat ki a felhasználó* és van még 4 multiple selected *itt nyílván többet választhat ki.*

A feladat az volt, hogy a form elementeket, a legelső select kivételével, újra kellett építeni minden "click" eseményen.

Ezt úgy csináltam, hogy mindegyik selectnek ugyan azt a wrappert és path-ot (a method replace volt) adtam, majd callback-en újra felépítettem a teljes form-ot utánna pedig a régi form-ot cachből behívtam, replaceltem, újraépítettem, becacheltem és rendereltem.

A $new változó az új form.
A $_POST / $_GET a $form_build-nél a lapozó miatt van

code-snipet:

 
  $form_state = array('submitted' => TRUE);
 
  $form_build_id = $_POST['form_build_id'] ? $_POST['form_build_id'] : $_GET['form_build_id'];
 
  if (!$form = form_get_cache($form_build_id, $form_state)) {
 
    exit();
 
  }
 
  $form['element1'] = $new['element1'];
 
  $form['element2'] = $new['element2'];
 
  for ($i = 0; $i <= 3; $i++) {
 
      $form['option'. $i] = $new['option'. $i];
 
  }
 
  $form['element3'] = $new['element3'];
 
  $form = form_builder('your_custom_form', $form, $form_state);
 
  form_set_cache($form_build_id, $form, $form_state);
 
  $form += array(
 
    '#post' => $_POST,
 
    '#programmed' => FALSE
 
  );
 
  $output = theme('status_messages') . drupal_render_form($form_build_id, $form);
 
  print drupal_json(array('status' => TRUE, 'data' => $output));
 
  exit();
0
0

*----*----*

$node ? 'alma' : 'bor'

*----*----*