Formulários PHP SilverStripe - Se eu aninhar um SelectionGroup dentro de um FieldGroup, uma das caixas de opções do SelectionGroup_Items 'não aparece. Por quê?

122

Eu tenho um formulário que tem dois se FieldGroup, e em um deles FieldGroupeu tenho um SelectionGroup.

Os SelectionGroup_Items são exibidos no formulário, FieldGroupmas as caixas de opções para selecionar uma das opções não são exibidas. Se eu removê- FieldGrouplo, ele funcionará novamente.

Eu olhei para os modelos de estrutura, e se eu mudar o FieldGroup_holder.ss SmallFieldHolderque FieldHolderas caixas aparecer novamente e trabalhar corretamente. Eu tentei seguir os modelos para ver qual deles não está obedecendo, SelectionGroupmas continuo me perdendo.

Aqui está um exemplo de código

$fields = FieldList::create(
    FieldGroup::create(
        TextField::create('Name', 'Name')
    ),
    FieldGroup::create(
        SelectionGroup::create(
            'Test1or2',
            array(
                SelectionGroup_Item::create(
                    'Test1', array(
                        TextField::create('Test1', 'Test1')
                    ),
                    'Test1'
                ),
                SelectionGroup_Item::create(
                    'Test2', array(
                        TextField::create('Test2', 'Test2')
                    ),
                    'Test2'
                )
            )
        )
    )
),
FieldList::create(
    FormAction::create('submit', 'Submit')
)
Rudiger
fonte
6
Parece que o SelectionGroup não possui um SelectionGroup_small.ssmodelo usado quando você aninha campos. Basta criá-lo no seu tema e modificá-lo. Também pode valer a pena levantar uma questão sobre github
wmk
1
@wmk não tendo muita sorte com isso. Mais alguma coisa que eu possa fazer para que funcione?
precisa
1
Eu também adicionei um problema do git github.com/silverstripe/silverstripe-framework/issues/6637
Rudiger
1
Essa não é uma ótima pergunta, e eu não sei como ela recebeu 57 votos positivos, especialmente devido à baixa contagem de visualizações, mas acho que não vai a lugar nenhum por causa disso. Seu problema está no HTML gerado, mas você não o fornece ou fornece um exemplo da saída HTML desejada. Seu exemplo de código é sintaticamente inválido e nenhum contexto é fornecido sobre o local em que é usado. Se você resolveu isso de alguma forma, deve postar uma resposta; se o problema não for mais relevante ou reproduzível, você deve excluir a pergunta.
miken32
6
@ miken32 tem a ver especificamente com a estrutura SilverStripe (daí a tag) e um bug foi publicado no repositório do GitHub (vinculado nos comentários). A razão pela qual não há html é porque não há modelo html para as funções fornecidas, esse é o bug. Além de um ponto e vírgula no final, não tenho idéia do que você está falando sobre ser sintaticamente inválido. Qualquer pessoa familiarizada com a estrutura conhecerá o contexto para ela. Ainda é um bug aberto e facilmente reproduzível.
quer

Respostas:

1

Você pode adicionar outro conjunto de campos e definir seus atributos como id="hidden_field" aria-hidden="true". No documento css, você pode fazer o seguinte.

    #hidden_field{
        display:none;
        height:0;
        width:0;
        margin:0;
        padding:0;
        visibility: hidden;
    }

Isso deve ocultar o comportamento da consulta do SilverStripe Framework. Nos meus formulários php, havia colchetes aleatórios sempre que alguém enviava um novo formulário várias vezes sob diferentes números de identificação de peça. Eu usei essa abordagem para ocultar os colchetes aleatórios no meu site.

JTS
fonte
@ Rudiger este código funcionou para contornar o bug do framework SilverStripe?
JTS