Grav-plugin-admin: Champ conditionnel - Définir la condition sur les champs autres/frères

Créé le 24 août 2018  ·  5Commentaires  ·  Source: getgrav/grav-plugin-admin

Dans le fichier de modèle pour un modèle, je voudrais utiliser un champ de répétition/liste,
qui a un champ de sélection avec des options,
et des champs conditionnels qui évaluent le choix sélectionné par les utilisateurs pour afficher les champs en conséquence.

Je voudrais l'utiliser pour de longs articles, où l'utilisateur pourrait ajouter/changer différents types de composants

Comment définir une condition à la valeur du champ de sélection (en répétition) ?
Dans l'état actuel du code, seul le select est visible et les conditionnels n'ont aucun effet.

        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

Tous les 5 commentaires

Le champ conditionnel n'est pas quelque chose qui fonctionne « en direct » sur la base d'autres champs, il peut simplement exécuter une fonction PHP lors de la maintenance et prendre une décision ensuite. Tout le reste nécessiterait l'exécution de Javascript.

Merci rhukster.

J'ai réussi à créer un « champ de contenu flexible »** (comme les champs personnalisés avancés dans Wordpress). Vous pouvez voir le code ici

** Définissez des groupes de sous-champs (mises en page) et ajoutez-les, modifiez-les et réorganisez-les pour créer un contenu hautement personnalisé !

J'adorerais voir quelque chose comme ça un champ de base dans le plugin Form :) PR peut-être ??

@rhukster
Une demande d'extraction a été effectuée pour la branche 'feature/flexible-form-field'.
Statut:

  • Le modèle de sélection de champ est utilisable. Les champs ajoutés s'enregistrent et se chargent correctement.
  • Js & Css doit encore être ajouté.
  • example-fieldselection.yaml est ajouté.

J'ai besoin d'aide sur :

  • Le tri des champs n'est pas enregistré en frontmatter.

tnx

(je suis sur le canal slack en tant que 'genenenenaam')

@rhukster

y a-t-il une dépendance sur le 'tri des éléments de liste' et le nom du modèle de champ 'list.html.twig' ?

J'ai fait un test et il me semble :

  • si vous créez un nouveau dossier 'fieldselection' au même niveau où se trouve le dossier 'list'.
  • dupliquez le fichier 'list.html.twig', renommez-le en 'fieldselection.html.twig' et placez-le dans le dossier 'fieldselection'.
  • si vous faites maintenant un plan où vous utilisez un type de champ 'liste', mais vous lui donnez un type de 'fieldselection'.
    (ce qui ne devrait pas faire de différence, donc les deux types ont le même contenu de code)
  • La réorganisation ne fonctionne pas pour le type 'fieldselection', mais elle le fait pour le type 'list'.
    (Idem pour supprimer un élément)

Je pense que la réponse à cette question peut résoudre mon problème avec l'état actuel de la nouvelle fonctionnalité.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

coolemur picture coolemur  ·  3Commentaires

ritchiedalto picture ritchiedalto  ·  6Commentaires

wildafrica picture wildafrica  ·  4Commentaires

jundiya picture jundiya  ·  4Commentaires

amadeusp picture amadeusp  ·  3Commentaires