Selectbox Abhängigkeit
am 18.05.2010 - 20:04 Uhr in
Hallo Drupalgemeinde.
Habe mal wieder ein kniffliges Problem.
Ich habe einen Inhaltstypen erstellt mit CCK. Den Edit-Bereich theme ich wie hier http://www.drupalcenter.de/handbuch/20522 beschrieben, alles super, wunderbar.
Jetzt habe ich zwei Selectboxen die in einer Abhängigleit stehen.
Die erste Box ist angelegt und mit einem jQuery .change soll die zweite Box dann gefüllt/angezeigt werden. Da ich nicht einfach 5 verschiedene Select-Boxen anlegen möchte, die dann ausgetauscht werden (was ja auch nicht wirklich elegant wäre), möchte ich in einer zweite Box die ID schreiben. Soweit auch nicht das eigentliche Problem.
Das Problem was ich habe ist, dass ich nicht die variable finde in der ich dann via drupal_render meinen ausgewählten wert schreiben muss, da ich ja zwischendrin die Kontrolle über die Select-Box selbst übernehme.
<?php
$form['field_category']['#value']['value'] = 3;
?>
hat zum Beispiel nicht funktioniert.
Ist das Geschriebene verständlich? Bitte dringend um Hilfe
Vielen Dank!
- Anmelden oder Registrieren um Kommentare zu schreiben
Vielleicht
am 18.05.2010 - 20:12 Uhr
Computed Field ?
http://drupal.org/project/computed_field
Sepp
Danke, aber das ist glaube
am 18.05.2010 - 20:19 Uhr
Danke,
aber das ist glaube ich mit Kanonen auf Spatzen geschossen. Es muss doch möglich sein in eine Select-Box etwas zurückzuschreiben in meinem Template, in alle anderen Felder kann ich dies ja auch.
Array
(
[#type] => optionwidgets_select
[#default_value] => Array
(
[0] => Array
(
[value] => 1
)
)
[#required] => 0
[#columns] => Array
(
[0] => value
)
[#title] => Kategorie
[#description] =>
[#delta] => 0
[#field_name] => field_category
[#type_name] => sedcard
[#tree] => 1
[#weight] => 23
[#access] => 1
[#count] => 9
[#post] => Array
(
)
[#programmed] =>
[#parents] => Array
(
[0] => field_category
)
[#array_parents] => Array
(
[0] => field_category
)
[#processed] => 1
[#attributes] => Array
(
)
[#input] => 1
[#process] => Array
(
[0] => optionwidgets_select_process
)
[#name] => field_category
[#id] => edit-field-category
[#value] => Array
(
[value] => 1
)
[value] => Array
(
[#type] => select
[#title] => Kategorie
[#description] =>
[#required] => 0
[#multiple] => 0
[#options] => Array
(
[] => - Keine -
[1] => US
[2] => UK
[3] => AUS / NZ
[4] => EU / JAP
[5] => B / E / P
)
[#default_value] => 1
[#post] => Array
(
)
[#programmed] =>
[#tree] => 1
[#parents] => Array
(
[0] => field_category
[1] => value
)
[#array_parents] => Array
(
[0] => field_category
[1] => value
)
[#weight] => 0
[#processed] => 1
[#attributes] => Array
(
)
[#input] => 1
[#size] => 0
[#process] => Array
(
[0] => form_expand_ahah
)
[#name] => field_category[value]
[#id] => edit-field-category-value
[#value] => 1
[#defaults_loaded] => 1
[#sorted] => 1
)
[#element_validate] => Array
(
[0] => optionwidgets_validate
)
[#defaults_loaded] => 1
[#sorted] => 1
)
Das hier ist die Select-Box
Bitte weitere Ideen.
gruss
drupalino
Die Werte der Select-Box
am 18.05.2010 - 20:26 Uhr
Die Werte der Select-Box werden per POST vom Browser an den Server (Drupal) zurückgegeben.
Du mußt da schon ein Feld haben, dessen "value" du mit jquery veränderst
z.B:
<input type="checkbox" name="zutat" value="salami">
Sepp
Klar, da kann man mal sehen
am 18.05.2010 - 20:38 Uhr
Klar, da kann man mal sehen wie man auf dem Schlauch steht. Natürlich hast Du recht!
thx
gruss
drupalino
Allerdings löst dies, wie ich
am 18.05.2010 - 20:56 Uhr
Allerdings löst dies, wie ich jetzt merke, mein Eingangsproblem in meinem ersten Post nicht.
Ich habe also praktisch eine Matrix, wo ich in der ersten Box gerne die Spalte wählen würde und mit der zweiten dann die Zeile. Jeder Wert in der Matrix hat eine ID und dies ID möchte ich gerne in die in die Datenbank meines Nodetypes schreiben.
Bekomme es aber irgendwie nicht hin!
gruss
drupalino
Naja
am 19.05.2010 - 17:47 Uhr
ist ja wohl nicht so trivial.
Könnte mir aber folgendes vorstellen:
Du übergibt per javascript jquery ein Array mit deiner Matrix also Feld[x][y]=IDxy
Du hast dann 2 selects mit x und y
und jedes Change-Ereignis der Selects trägt die entsprechende ID in den "Value" eines nicht sichtbaren Form-Feldes ein.
Könnte klappen ..
Sepp
Ja, genau so habe ich mir das
am 19.05.2010 - 17:55 Uhr
Ja, genau so habe ich mir das auch gedacht, hab nur im moment Probleme die Werte richtig wieder anzeigen zu lassen, wenn ich die Node erneut editiere, da ich ja auch das zweite Feld in Drupal als Selectbox anlegen muss und dadurch meckert drupal, da ich im administrations bereich keine zulässigen Werte eintragen kann.
schon doof. mittlerweile glaube ich, dass ich nicht drumherum komme ein cck-modul zu schreiben. schöner ohne wärs schon
gruss
drupalino
Eigenes Modul
am 19.05.2010 - 17:59 Uhr
ist immer gut.
Da du ja bestimmt einen bestimmten Node-Typ hast, kannst du ja die Form mit hook_form_alter http://api.drupal.org/api/function/hook_form_alter
relativ einfach manipulieren.
Sepp
Ja, nur ein modul für ein
am 19.05.2010 - 18:04 Uhr
Ja, nur ein modul für ein cck-field scheint mir um einiges schwieriger zu schreiben zu sein als ein einfaches Modul ( http://www.poplarware.com/articles/cck_field_module ) und ausserdem drück mich ein bischen die zeit ;-)
gruss
drupalino