web-dev-qa-db-fra.com

SilverStripe PHP Forms - Si j'imbrique un SelectionGroup à l'intérieur d'un FieldGroup, l'un des Radio Box SelectionGroup_Items associés ne s'affiche pas. Pourquoi?

J'ai un formulaire qui a deux FieldGroups, et dans l'un des FieldGroups j'ai un SelectionGroup.

Le SelectionGroup_Items apparaissent sous la forme FieldGroup mais les cases d'option pour sélectionner l'une des options ne s'affichent pas. Si je supprime le FieldGroup, cela fonctionne à nouveau.

J'ai regardé les modèles de framework, et si je change le FieldGroup_holder.ssSmallFieldHolder à FieldHolder les cases radio apparaissent à nouveau et fonctionnent correctement. J'ai essayé de suivre les modèles pour voir lequel n'obéit pas au SelectionGroup mais je continue de me perdre.

Voici un exemple de code

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

Vous pouvez ajouter un autre jeu de champs, puis définir ses attributs sur id="hidden_field" aria-hidden="true". Dans le document CSS, vous pouvez effectuer les opérations suivantes.

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

Cela devrait masquer le comportement des requêtes de SilverStripe Framework. Dans mes propres formulaires php, des parenthèses aléatoires apparaissaient chaque fois que quelqu'un soumettait un nouveau formulaire plusieurs fois sous différents numéros d'identification de pièce. J'ai utilisé cette approche pour masquer les parenthèses aléatoires sur mon site.

1
JTS