SilverStripe PHP Forms - Se annido un SelectionGroup all'interno di un FieldGroup, uno dei relativi box radio di SelectionGroup_Items non viene visualizzato. Perché?


122

Ho un modulo che ha due FieldGroups e in uno di questi FieldGroupho un SelectionGroup.

Le SelectionGroup_Items vengono visualizzate nel modulo FieldGroupma le caselle radio per selezionare una delle opzioni non vengono visualizzate. Se lo rimuovo FieldGroup, funziona di nuovo.

Ho esaminato i modelli del framework e se cambio il FieldGroup_holder.ss SmallFieldHolderin FieldHolderle caselle radio appaiono di nuovo e funzionano correttamente. Ho provato a seguire i modelli per vedere quale non sta obbedendo SelectionGroupma continuo a perdermi.

Ecco un esempio di codice

$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')
)

6
Sembra che SelectionGroup non abbia un SelectionGroup_small.ssmodello che viene utilizzato quando si nidificano i campi. Crealo nel tuo tema e modificalo. Potrebbe anche valere la pena sollevare un problema su GitHub
settimana

1
@wmk non ha molta fortuna con quello. C'è qualcos'altro che posso fare per farlo funzionare?
Rudiger


1
Questa non è una grande domanda, e non so come abbia ottenuto 57 voti positivi, soprattutto considerando il basso numero di visualizzazioni, ma immagino che non stia andando da nessuna parte per questo motivo. Il tuo problema è con l'HTML generato, ma non lo fornisci o fornisci un esempio dell'output HTML desiderato. Il codice di esempio non è sintatticamente valido e non viene fornito alcun contesto in merito a dove viene utilizzato. Se hai risolto il problema in qualche modo, dovresti pubblicare una risposta; se il problema non è più rilevante o riproducibile, dovresti eliminare la domanda.
miken32

6
@ miken32 ha a che fare specificamente con il framework SilverStripe (da cui il tag) ed è stato pubblicato un bug sul repository GitHub (linkato nei commenti). Il motivo per cui non esiste HTML è perché non esiste un modello HTML per le funzioni date, questo è il bug. A parte un punto e virgola alla fine, non ho idea di cosa tu stia parlando, essendo sintatticamente non valido. Chiunque abbia familiarità con il framework ne conoscerà il contesto. È ancora un bug aperto e facilmente riproducibile.
Rudiger

Risposte:


1

È possibile aggiungere un altro set di campi quindi impostare i suoi attributi su id="hidden_field" aria-hidden="true". Nel documento css potresti fare quanto segue.

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

Questo dovrebbe nascondere il comportamento delle query di SilverStripe Framework. Nei miei moduli php avevo parentesi casuali che apparivano ogni volta che qualcuno inviava un nuovo modulo numerose volte con numeri di identificazione parte diversi. Ho usato questo approccio per nascondere le parentesi casuali sul mio sito.


@Rudiger ha funzionato questo codice per aggirare il bug del framework SilverStripe?
JTS
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.