Grav-plugin-admin: Campo condicional: establezca la condición en otros campos / hermanos

Creado en 24 ago. 2018  ·  5Comentarios  ·  Fuente: getgrav/grav-plugin-admin

En el archivo de plano de una plantilla, me gustaría usar un campo repetidor / lista,
que tiene un campo de selección con opciones,
y campos condicionales que evalúan la opción seleccionada por los usuarios para mostrar los campos en consecuencia.

Me gustaría usar esto para artículos largos, donde el usuario podría agregar / cambiar diferentes tipos de componentes

¿Cómo establezco una condición para el valor del campo de selección (en repetición)?
Como está el código ahora, solo la selección es visible y los condicionales no tienen ningún efecto.

        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

Todos 5 comentarios

El campo condicional no es algo que funcione "en vivo" basado en otros campos, simplemente puede ejecutar una función PHP cuando se le da servicio y luego tomar una determinación. Cualquier otra cosa requeriría Javascript para ejecutarse.

Gracias rhukster.

Me las arreglé para hacer un 'Campo de contenido flexible' ** (como los campos personalizados avanzados en Wordpress). Puedes ver el código aquí

** ¡Defina grupos de subcampos (diseños) y agréguelos, edítelos y reordenelos para crear contenido altamente personalizado!

Me encantaría ver algo como esto en un campo central en el complemento de formulario :) ¿PR quizás?

@rhukster
Se ha realizado una solicitud de extracción para la rama 'feature / flexible-form-field'.
Estado:

  • La plantilla de selección de campo es utilizable. Los campos agregados se guardan y cargan correctamente.
  • Aún es necesario agregar Js y Css.
  • Se agrega example-fieldselection.yaml.

Necesito ayuda en:

  • La clasificación de campos no se guarda en frontmatter.

tnx

(estoy en el canal flojo como 'genenenenaam')

@rhukster

¿Existe alguna dependencia en la 'clasificación de elementos de la lista' y el nombre de la plantilla de campo 'list.html.twig'?

Hice una prueba y parece:

  • si crea una nueva carpeta 'fieldselection' en el mismo nivel donde se encuentra la carpeta 'list'.
  • Duplique el archivo 'list.html.twig', cámbiele el nombre a 'fieldselection.html.twig' y colóquelo dentro de la carpeta 'fieldselection'.
  • si ahora crea un plano en el que usa un tipo de campo 'lista', pero le da un tipo de 'selección de campo'.
    (lo que no debería marcar la diferencia, por lo tanto, ambos tipos tienen el mismo contenido de código)
  • El reordenamiento no funciona para el tipo 'fieldselection', pero sí para el tipo 'list'.
    (Lo mismo para eliminar un elemento)

Creo que la respuesta a esto puede resolver mi problema con el estado actual de la nueva función.

¿Fue útil esta página
0 / 5 - 0 calificaciones