Eine klare Anleitung, wie ein Playa-Feld als Dropdown in einem Safecracker-Formular einzufügen ist, so dass der richtige Eintrag im Dropdown als ausgewählt gezeigt wird, ist nirgendwo zu finden. In den Beiträgen auf Get Satisfaction von Pixel & Tonic hier gibt es Stückchen, die erst bei richtigem Zusammensetzen das gewünschte Ergebniss bringen.
Hier die kurze Zusammenfassung, wie man es machen muss:
Im Beispiel ist ein Channel "domains" (eine Liste von Domainnamen) mit einem Playa-Feld "domain_kunde" (eine Liste von Kundennamen). Das Playa-Feld ist also mit dem Channel "kunden" verknüpft, wo im title der Kundenname steht. Einer bestimmten Domain (z.B. "heartwaves.ch") wird der Kunde (z.B. Octave 2 GmbH) zugewiesen.
Im Formular-Template ist der Code für ein Safecracker-Formular. Unter allen anderen Feldern ist ein Dropdown, das anzeigen soll, wem die Domain mit der entry_id gehört, die im URL an der Stelle des 3. Segment (also {segment_3} steht. Wenn gewünscht, kann die Domain einem anderen Kunden zugeteilt werden.
Es steht ein Aufruf zum Embeden eines Templates. Dem Template wird die Child-ID des Playa-Feldes mitgegeben. Es ist die ID, welche der abgespeicherten Auswahl für das Feld "domain_kunde" entspricht.
Der Code für das Dropdown: (Space vor dem select entfernen)
< select name="domain_kunde[selections][]">
{exp:channel:entries channel="domains" dynamic="no" entry_id="{segment_3}"}
{embed="domains/_kunden_drop" selected="{domain_kunde:child_ids}"}
{/exp:channel:entries}
Es steht ein Aufruf zum Embeden eines Templates. Dem Template wird die Child-ID des Playa-Feldes mitgegeben. Es ist die ID, welche der abgespeicherten Auswahl für das Feld "domain_kunde" entspricht.
Der Code im Embed:
{exp:channel:entries
channel="kunden"
disable="custom_fields|categories|category_fields|member_data|pagination|trackbacks"
dynamic="no"
}
< option value="{entry_id}"selected>{title}
{/exp:channel:entries}
Hoffe, dieser kurze Hinweis hilft. Ich hatte lange gesucht und probiert, bis ich auf die passende Lösung gestossen bin.
