Grav-plugin-admin: Bedingtes Feld - Bedingung auf andere/gleichgeordnete Felder setzen

Erstellt am 24. Aug. 2018  ·  5Kommentare  ·  Quelle: getgrav/grav-plugin-admin

In der Blueprint-Datei für eine Vorlage möchte ich ein Repeater-/Listenfeld verwenden,
das ein Auswahlfeld mit Optionen hat,
und bedingte Felder, die die vom Benutzer ausgewählte Auswahl auswerten, um Felder entsprechend anzuzeigen.

Ich möchte dies für lange Artikel verwenden, bei denen der Benutzer verschiedene Arten von Komponenten hinzufügen / wechseln kann

Wie setze ich eine Bedingung auf den Wert des Auswahlfeldes (in Wiederholung)?
Wie der Code jetzt ist, ist nur die Auswahl sichtbar und die Bedingungen haben keine Auswirkung.

        header.field.selection:
          type: list
          style: vertical
          label: Repeater/list with conditional field selection
          fields:
            .select: # this select sets the boolean for the conditional fields
              type: select
              size: long
              classes: fancy
              label: Select the type of field you would like to add
              options:
                tinymce: Textarea
                slideshow: Slideshow
                testimonial: Testimonial
                video: Video
            .tinymce:
              type: conditional # if Textarea was selected render the tinymce fields
              condition: "header.field.selection.select is same as('tinymce') ? 'true' : 'false'"
              fields: 
                .fieldName:
                  type: text
                  label: Tinymce
            .slideshow:
              type: conditional # if slideshow was selected render the slideshow fields
              condition: "header.field.selection.select is same as('slideshow') ? 'true' : 'false'"
              fields: 
                .fieldName2:
                  type: text
                  label: Slideshow
            .testimonial:
              type: conditional # if testimonial was selected render the testimonial fields
              condition: "header.field.selection.select is same as('testimonial') ? 'true' : 'false'"
              fields: 
                .fieldName3:
                  type: text
                  label: Testimonial
            .video:
              type: conditional # if video was selected render the video fields
              condition: "header.field.selection.select is same as('video') ? 'true' : 'false'"
              fields: 
                .fieldName4:
                  type: text
                  label: Video
question

Alle 5 Kommentare

Das Bedingungsfeld ist nicht etwas, das basierend auf anderen Feldern "live" funktioniert, es kann einfach eine PHP-Funktion ausführen, wenn es bedient wird, und dann eine Bestimmung treffen. Alles andere würde Javascript erfordern.

Danke Rukster.

Ich habe es geschafft, ein 'Flexibles Inhaltsfeld'** zu erstellen (wie erweiterte benutzerdefinierte Felder in Wordpress). Den Code könnt ihr hier sehen

** Definieren Sie Gruppen von Unterfeldern (Layouts) und fügen Sie sie hinzu, bearbeiten und ordnen Sie sie neu an, um hochgradig individuelle Inhalte zu erstellen!

Würde gerne so etwas als Kernfeld im Form-Plugin sehen :) PR vielleicht??

@rhukster
Für den Zweig 'Feature/Flexible-Form-Feld' wurde ein Pull-Request gestellt.
Status:

  • Feldauswahlvorlage ist verwendbar. Hinzugefügte Felder werden korrekt gespeichert und geladen.
  • Js & CSS müssen noch hinzugefügt werden.
  • example-fieldselection.yaml wird hinzugefügt.

Ich brauche Hilfe bei:

  • Die Sortierung der Felder wird in frontmatter nicht gespeichert.

tnx

(Ich bin auf dem Slack Channel als 'genenenenaam')

@rhukster

Gibt es eine Abhängigkeit von der 'Sortierung der Listenelemente' und dem Namen der Feldvorlage 'list.html.twig' ?

Ich habe einen Test gemacht und es scheint:

  • wenn Sie einen neuen Ordner 'fieldselection' auf derselben Ebene erstellen, auf der sich der Ordner 'list' befindet.
  • Duplizieren Sie die Datei 'list.html.twig', benennen Sie sie in 'fieldselection.html.twig' um und legen Sie diese in den Ordner 'fieldselection' ab.
  • wenn Sie jetzt eine Blaupause erstellen, in der Sie einen Feldtyp "Liste" verwenden, ihm jedoch eine Art "Feldauswahl" zuweisen.
    (was keinen Unterschied machen sollte, daher haben beide Typen den gleichen Codeinhalt)
  • Die Neuordnung funktioniert nicht für den Typ 'fieldselection', wohl aber für den Typ 'list'.
    (Das gleiche gilt für das Löschen eines Elements)

Ich glaube, dass die Antwort darauf mein Problem mit dem aktuellen Status der neuen Funktion lösen kann.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ritchiedalto picture ritchiedalto  ·  6Kommentare

dimayakovlev picture dimayakovlev  ·  5Kommentare

maciejmatu picture maciejmatu  ·  3Kommentare

WilliamMiceli picture WilliamMiceli  ·  4Kommentare

darkroastcreative picture darkroastcreative  ·  4Kommentare