ajax

jabba306 képe

Sziasztok!

A következő problémába futottam be, és a hiányos Drupal tudásommal sajnos nem találom a megoldást a folytatásra.

A probléma a következő: Adott egy field collection. Ebben vannak mezők és többek között egy markup is.
Ennek a markupnak az értékét alternálom (hook_form_alter) ami működik is.
Azonban a field collection-t dinamikusan lehet hozzáadni és törölni ajax segítségével. A gond az, hogy a hook_form_alter nem fut le természetesen a Újabb elem hozzáadása vagy a törlés gombra kattintva, így a markup felülírása megszűnik, a markup visszaáll alapállapotra.

A kérdésem az lenne, hogy hogyan és milyen módon tudnám elkérni, hogy az ajax futás után a markup továbbra is alternálva legyen.

Köszönöm!

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
pp képe

Kódot tudsz mutatni?

0
0
jabba306 képe

Természetesen tudok kódot mutatni.
A feladat, amit meg kell valósítanom az az, hogy egy field collection-ben mező szerepel. Korlátlan field collection-t hozzá lehet adni a node-hoz.
Az egyik mezőt, csak létrehozni és megmutatni lehet, szerkesztést nem lehet engedélyezni.

Viszont a FC-ben lévő többi mező szerkeszthető, de a beállítás függ a nem szerkeszthető mezőtől. A node-edit oldalon ugyanakkor az előbb említett mező nem jelenik meg. Ezért telepítettem a markup modult és próbáltam a markup-nak átadni az említett mező értékét, hogy megjelenjen. Ez működik is, de amít úgy field collectiont adok hozzá a beállított markup érték az ajax hívás miatt visszaáll.

A kód, amit eddig írtam így néz ki:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
   if ($form_id == 'ingatlan_node_form') {
 
		if ($node = menu_get_object()) {
		// Get the nid
		$nid = $node->nid;
		}
 
		$query = db_select('field_data_field_feladat', 'f');
		$query->join('field_data_field_leiras', 'l', 'f.field_feladat_value = l.revision_id');
		$query->fields('f', array('delta'));
		$query->fields('l', array('field_leiras_value'));
		 $query ->condition('f.entity_id', $nid, '=');
		 $query ->orderby('f.delta', 'ASC');
		$result = $query->execute();
 
		foreach($result as $row) {
			$form['field_feladat'][LANGUAGE_NONE][$row->delta]['field_sz_veg'][LANGUAGE_NONE]['0']['markup']['#markup']=$row->field_leiras_value;
 
 
		}
	}	  
return $form;
}
0
0