#ajax Funktionalität in einem Field Widget
am 30.01.2012 - 18:15 Uhr in
Hallo, ich habe
ein neues Feldtyp erstellt, dort habe ich zwei auswahllisten( in Abhängigkeit zueinander)
so sieht etwa mein code aus:
<?php
function depend_dropdown_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element){
...
...
// Erste Auswahlliste
$element['1element'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => $1option,
...
// Nach dem Auswählen soll Ajax, abhängig von der Auswahl die Zweite Auswahlliste zubereiten.
'#ajax' => array(
'wrapper' => 'wrapper',
'callback' => 'my_ajax_callback',
),
);
// Die zweite Auswahlliste.
$element['2element'] = array(
...
...
'#prefix' => '<div id="wrapper">',
'#suffix' => '</div>',
// Dies ist die funktion die mir das array für die 2. Auswahlliste zurückgibt.
'#options' => _get_2element_optins($1option),
);
return $element;
}
// Also mit der Field api scheint das nicht zu klappen, wie in einem Formular...
// ich bin mir sicher der callback wird ausgeführt.
// aber was ich nach return in der callback function schreiben soll ist mir total unklar. $element[]? $form[] ?
// hab also schon einiges ausprobiert, hat leider nix geklappt.
//Vllt. Liegt das Problem aber Oben bei $1option... Denn das wäre die nächste Frage,
//Wie hole ich die Auswahl in die Variable, ohne die Seite neu zuladen.. Das ist auch das ZIEL ;)
//$form_state['values']['field'....][...] gab mir zwar den Wert wieder, aber erst nach
//dem Aktualisieren der Seite..
function my_ajax_callback($form, $form_state){
return $form['2element'];
}
?>Also krieg ich das irgendwie nicht gebacken, bin mir also zieeemlich unsicher was dort jetzt zu tun ist, vllt hängt es an der Uhrzeit oder am Fehlen von Koffein aber ich verstehe nicx mehr... meine Fragen:
1. was soll man im callback aufrufen (Wir befinden uns in der Field Api)???
2. wie bekomme ich das Zuerst ausgewählte VALUE in die funktion _get_2element_options($1option)
oder besser gesagt wie definiere ich es in der variable $1option ? Mit $form_state['values'] geht es nicht, dafür muss die Seite neugeladen werden, was ich auch mittels ajax verhindern will...
Freue mich auf eure Antworten
borik
- Anmelden oder Registrieren um Kommentare zu schreiben

Also komme bei der callback
am 31.01.2012 - 05:01 Uhr
irgendwelche Ideen???
Die Funktion
am 31.01.2012 - 05:02 Uhr
...
Also die lösung ist einfach
am 10.02.2012 - 23:09 Uhr
Also die lösung ist einfach in der callbackfunktion das $form['field_name'][LANGUAGE][0][element_name] zu returnen
Nicht einfach return $element['foo'];