select list mit form_alter verändern?
am 15.02.2008 - 01:47 Uhr in
Hallo,
also ich habe hier folgendes Problem. Ich habe ein select list über cck zu einem content type hinzu gefügt und möchte nun die zur Auswahl stehenden Begriffe angeben. Mein Problem ist allerdings, dass ich nicht direkt die Begriffe in der Seite des Feldes angeben kann, da sie dynamisch angegeben werden. Auch über die php Möglichkeiten in den Einstellungen geht es nicht, da ein hier aufgerufenes Skript bei jedem anzeigen des Feldes in einem Node aufgerufen wird und somit die Seite stark verlangsamt.
Also habe ich es über form_alter versucht. Es klappt auch soweit, dass ich beim anzeigen der Form die übergebenen Einträge zur Auswahl habe, nur werden die nicht weiter, an die erstellte Node, übergeben. Trage ich testweise ein paar Werte in der Optionenseite zu diesem Feld ein, so funktioniert es aber problemlos. Ich habe den Verdacht, dass das Feld nochmal überprüft, ob die Werte erlaubt sind oder nicht und die dann verwirft. allerdings habe ich überhaupt keine Ahnung, wie ich da etwas dran ändern kann.
Hat hier jemand vielleicht eine Idee, was man da machen kann??
Grüße
[vampire]
- Anmelden oder Registrieren um Kommentare zu schreiben
ich habe es jetzt gelöst,
am 15.02.2008 - 20:38 Uhr
ich habe es jetzt gelöst, indem ich eine komplett neue select list über die form api erstellt habe und damit geht es jetzt.
grüße
[vampire]
Lösung
am 16.02.2008 - 01:48 Uhr
Verräts du deine Lösung auch? Dann haben alle etwas davon :-)
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
hmm ok habe mich da
am 17.02.2008 - 14:22 Uhr
hmm ok habe mich da vielleicht etwas knapp gefasst, aber das war eigentlich schon die lösung. Ich habe die Form über hook_form_alter() beim erstellen abgepasst und da dann in die Form eine select list eingetragen. dazu der syntaxauszug von der drupal.org api datenbank:
$form['feed']['feed_item_length'] = array(
'#type' => 'select',
'#title' => t('Display of XML feed items'),
'#default_value' => variable_get('feed_item_length','teaser'),
'#options' => array(
'title' => t('Titles only'),
'teaser' => t('Titles plus teaser'),
'fulltext' => t('Full text'),
),
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
);
den options array kann man nun nach belieben verändern und eigene Einträge erstellen. Somit hat man nun eine funktionierende select list. Da hier jetzt aber der vom user ausgewählte wert nicht in der Datenbank gespeichert wird, muss man noch den Wert von hand speichern. Dies habe ich so gelöst, dass ich (es hat sich bei mir um eine node-form gehandelt) in hook_nodeapi bei updaten der node das Feld der select list ausgelesen habe, und dann in die datenbank eingetragen habe.
Man kann jetzt noch in der form in dem eintrag default_value die vorauswahl angeben und hat somit eine vollständig funktionierende select list.
Ich hoffe, dass das einigermassen verständlich geschrieben ist :)
Grüße
[vampire]
Alter thread, aktuelle
am 18.02.2011 - 13:55 Uhr
Alter thread, aktuelle Fragen.
1. Ein neues Form Element hinzuzufügen geht ja recht einfach. Muss ich dann vor jedem Submit checken, ob es den Eintrag schon in der Datenbank gibt? Beim ersten Erstellen gibt es ja keinen, bei einem weiteren Edit aber schon.
2. Es wäre weiterhin interessant zu wissen, wie ich eine bestehende Select List verändern kann. Ideen?
Gruß
Sven