drupal6 es az AHAH

gdavid képe

üdv.

szerettem volna egy dinamikus form-ot készíteni, ahol 1 sorban 3 input van, ezzel meg nem is volt problema.
de olyannak akartam megcsinalni, hogy ez a sor ismetlodjon 3+n -szer. ezt is nagy nehez, kisebb hibakkal megcsinaltam.

a harom input elembol az egyik egy select aminek valasztasatol fuggoen a masik ketto erteke es irhatosaga valtozik. na itt mar gondjaim tamadtak.
mert ha sikerult megcsinalnom, csak reszben volt jo. egeszen addig, mig meg egyszer nem valaszottam ki a selecttel egy masik erteket. ekkor semmit nem csinalt. csakugy mintha hozzaadtam volna egy uj sort (dinamikusan, ahah-al). Nincs valaki aki ert egy kicsit a drupal6-ban behozott ahah-hoz?

egyebkent nem node-typeot kell allitgatni.

function control_js() {
	$args=func_get_args();
	if ($args[0]=='plan') {
		$dik=$args[1];
		$cid='form_'. $_POST['form_build_id'];
	  	$cache = cache_get($cid, 'cache_form');
	  	$form = $cache->data;
	  	$edit=$_POST['terv'];
	 	if (in_array($edit[$dik]['mod'],array(36))) {
			$form['terv'][$dik]['rpt']['#disabled']=FALSE;
		}
		if (in_array($edit[$dik]['mod'],array(37,38))) {
			$form['terv'][$dik]['ido']['#disabled']=FALSE;
		}
		if ($edit[$dik]['mod']==39) {
			$form['terv'][$dik]['ido']['#value']='00:20:00';
		}
		$form['terv'][$dik]['mod']['#value']=$edit[$dik]['mod'];
		unset($form['terv'][$dik]['#printed'],
			$form['terv'][$dik]['dik']['#printed'],
			$form['terv'][$dik]['rpt']['#printed'],
			$form['terv'][$dik]['mod']['#printed'],
			$form['terv'][$dik]['ido']['#printed']
		);
		$expire = max(ini_get('session.cookie_lifetime'), 86400);
  		cache_set($cid, $form, 'cache_form', $expire);
	  	$output = theme('status_messages') .drupal_render($form['terv'][$dik]);
		drupal_json($output);exit;
	}
}
alippai képe

Jövő 7 végétől tudok segíteni, én csináltam már hasonlót. Addig sajnos vizsgáim vannak :(

0
0

Lippai Ádám
young element

gdavid képe

erdekelne tovabbra is...

0
0
alippai képe

Még nincs 7vége, péntek v. szombaton írok ;)

0
0

Lippai Ádám
young element

nevergone képe

Szia!

Lehet, hogy buta kérés, de meg tudnád írni általánosabb (mondjuk egy kézikönyvlap) formában? Úgy gondolom, többünket érdekelne ez a téma, és egy hosszabb, több részletre kiterjedő leírás sokat segítene a későbbiekben a hasonló problémák megoldásában.

Köszönöm. :)

0
0
alippai képe

Lesz kézikönyv, bár még át kell néznem, hogy hogy működik az egész javascript nélkül (mert elméletileg úgy is mennie kell).

0
0

Lippai Ádám
young element

alippai képe

  1. Ha jól tudom nem kell a függvény végére exit;
  2. Illetve ez a helyes szintaxis AHAHra:
    drupal_json(array('status' => TRUE, 'data' => $output));

    nem ez:
    drupal_json($output);
  3. A formot újra kell építened miután beleillesztetted az új form részletet:
      $form_state = array('submitted' => FALSE);
      $form = $cache->data;
      $form += array(
        '#post' => $_POST,
        '#programmed' => FALSE,
      );
      $form = form_builder('MODULNEV_node_form', $form, $form_state);
      $output = theme('status_messages') . drupal_render($form['terv'][$dik]);
  4. Jó lenne ha láthatnánk a konkrét oldalat, mivel sok benne a JS és így nehéz többet mondanunk, azt se tudom konkrétan mi a hiba (a kérésre nem érkezik válasz, rossz válasz érkezik és még van 1-2 lehetőség) :)
0
0

Lippai Ádám
young element

chx képe

A drupal_json kimenetét print-elni kell, exit nem kell a végére, ha üresen tér vissza, akkor a rendszer nem nyomtat köré semmit. cache_set kézzel felesleges (és hibára ad lehetőséget), van form_set_cache. Egyelőre ennyi, alippai hozzászólásával együtt ez valószínűleg elég is lesz, ha sikerült, várjuk a leírást :)

0
0
alippai képe

A drupal_json() már elvégzi a kiíratást, nincs szükség print-re. A form_set_cache() használatával viszont teljes mértékben egyetértek :)

0
0

Lippai Ádám
young element

gdavid képe

koszonom a hozzaszolasokat. eleg sokat szorakoztam vele, mire sajnos feladtam, mert az istennek nem akart ugy mukodni ahogy szerettem volna. inkabb megoldottam full js-ben az egeszet, miutan azt olvastam a drupal.org-on valami hozzaszolasban, hogy az autocomplete es az ahah nem jobaratok, meg kulonben sem akart rendben mukodni.

a lenyeg az, hogy van egy sor, benne 3 input mezo. (select, textfield+autocomplete, textfield)
ezt theme_fvnev_form -al rendezem, amivel nincs is gond.
az eredeti elkepzelesem szerint lenne hozza "Uj sor" gomb, amivel hozzatehetek tetszoleges szamu sort.
ezt meg meg is tudtam csinalni ahah-al.

a gond ott kezdodott, hogy nekem arra volt szuksegem, hogy a select erteketol fuggoen, a 2. vagy 3. vagy mindket input mezo disabled legyen.
mar azt is sikerult elernem, hogy az elso kivalasztasnal rendesen ki-be kapcsolja az input mezoket.
de mikor ujra valtoztattam rajta, nem hajtotta vegre.

ha ehhez meg hozzaveszem, hogy ha uj sort adtam hozza, ott nem voltak ervenyesek az ahah- mezok...

bonuszkent meg hozzatennem, hogy elkuldes utan meg, hiba eseten a beallitott ertekek elvesztek mikor korrigaltam a hianyzo mezoket...

0
0