Grav-plugin-admin: Campo condicional - define a condição para outros campos / irmãos

Criado em 24 ago. 2018  ·  5Comentários  ·  Fonte: getgrav/grav-plugin-admin

No arquivo de blueprint de um modelo, gostaria de usar um campo de repetidor / lista,
que tem um campo de seleção com opções,
e campos condicionais que avaliam a escolha selecionada pelos usuários de exibir os campos de acordo.

Eu gostaria de usar isso para artigos longos, onde o usuário poderia adicionar / trocar diferentes tipos de componentes

Como faço para definir uma condição para o valor do campo de seleção (em repetição)?
Como o código está agora, apenas o select está visível e as condicionais não têm efeito.

        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 comentários

O campo condicional não é algo que funciona 'ao vivo' com base em outros campos, ele simplesmente pode executar uma função PHP ao ser atendido e fazer uma determinação em seguida. Qualquer outra coisa exigiria Javascript para ser executado.

Obrigado rhukster.

Consegui fazer um 'Campo de conteúdo flexível' ** (como campos personalizados avançados no Wordpress). Você pode ver o código aqui

** Defina grupos de subcampos (layouts) e adicione, edite e reordene-os para criar conteúdo altamente personalizado!

Adoraria ver algo assim como um campo central no plugin de formulário :) PR talvez ??

@rhukster
A solicitação de pull foi feita para o branch 'feature / Flexible-form-field'.
Status:

  • O modelo de seleção de campo pode ser usado. Os campos adicionados estão salvando e carregando corretamente.
  • Js e Css ainda precisam ser adicionados.
  • example-fieldselection.yaml é adicionado.

Eu preciso de ajuda em:

  • A classificação dos campos não está sendo salva no frontmatter.

tnx

(estou no canal slack como 'genenenenaam')

@rhukster

existe alguma dependência da 'classificação dos itens da lista' e do nome do modelo de campo 'list.html.twig'?

Fiz um teste e parece:

  • se você fizer uma nova pasta 'seleção de campos' no mesmo nível onde a pasta 'lista' está localizada.
  • duplique o arquivo 'list.html.twig', renomeie-o para 'fieldselection.html.twig' e coloque-o dentro da pasta 'fieldselection'.
  • se você agora faz um blueprint onde usa um tipo de campo 'lista', mas dá a ele um tipo de 'seleção de campos'.
    (o que não deve fazer diferença, portanto, os dois tipos têm o mesmo conteúdo de código)
  • A reordenação não funciona para o tipo 'seleção de campos', mas sim para o tipo 'lista'.
    (O mesmo para excluir um item)

Acredito que a resposta a isso pode resolver meu problema com o estado atual do novo recurso.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

maciejmatu picture maciejmatu  ·  3Comentários

ritchiedalto picture ritchiedalto  ·  6Comentários

dimayakovlev picture dimayakovlev  ·  5Comentários

darkroastcreative picture darkroastcreative  ·  4Comentários

orasik picture orasik  ·  6Comentários