Formularze PHP SilverStripe - Jeśli zagnieżdżę SelectionGroup wewnątrz FieldGroup, jedno z powiązanych pól radiowych SelectionGroup_Items nie jest wyświetlane. Czemu?

122

Mam formularz, który ma dwa FieldGroups, aw jednym z nich FieldGroupmam SelectionGroup.

Do SelectionGroup_Items pojawiają się w formie FieldGroup, ale kropeczkami, aby wybrać jedną z opcji nie pokazuje. Jeśli usunęFieldGroup będzie działać ponownie.

Szukałem na szablonach ramowych, a jeśli zmienię FieldGroup_holder.ss SmallFieldHolderna FieldHolderkropeczkami ponownie i pracować poprawnie wyświetlane. Próbowałem postępować zgodnie z szablonami, aby zobaczyć, który z nich nie jest zgodny zSelectionGroup ale wciąż się gubię.

Oto przykładowy fragment kodu

$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
źródło
6
Wygląda na to, że SelectionGroup nie ma SelectionGroup_small.ssszablonu, który jest używany podczas zagnieżdżania pól. Po prostu utwórz go w swoim motywie i zmodyfikuj. Warto również zgłosić problem na github
wmk
1
@wmk nie ma z tym dużo szczęścia. Coś jeszcze mogę zrobić, aby to zadziałało?
Rudiger,
1
To nie jest świetne pytanie i nie wiem, jak przyniosło to 57 głosów za, zwłaszcza biorąc pod uwagę niską liczbę wyświetleń, ale myślę, że z tego powodu nigdzie się nie wybiera. Twój problem dotyczy wygenerowanego kodu HTML, ale nie podajesz go ani nie podajesz przykładu żądanego wyjścia HTML. Twój przykładowy kod jest niepoprawny składniowo i nie podano kontekstu, gdzie jest używany. Jeśli jakoś to rozwiązałeś, powinieneś opublikować odpowiedź; jeśli problem nie jest już istotny lub odtwarzalny, należy usunąć pytanie.
miken32
6
@ miken32 ma to związek z frameworkiem SilverStripe (stąd znacznik), a błąd został opublikowany w repozytorium GitHub (link w komentarzach). Przyczyną braku html jest brak szablonu html dla podanych funkcji, czyli błąd. Poza średnikiem na końcu nie mam pojęcia, o czym mówisz, że jest to niepoprawne składniowo. Każdy, kto jest zaznajomiony z frameworkiem, zna jego kontekst. Wciąż jest to błąd otwarty i łatwy do odtworzenia.
Rudiger

Odpowiedzi:

1

Możesz dodać kolejny zestaw pól, a następnie ustawić jego atrybuty na id="hidden_field" aria-hidden="true". W dokumencie css możesz wykonać następujące czynności.

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

Powinno to ukryć zachowanie zapytań SilverStripe Framework. W moich własnych formularzach php pojawiały się przypadkowe nawiasy, gdy ktoś wielokrotnie przesyłał nowy formularz pod różnymi numerami identyfikacyjnymi części. Użyłem tego podejścia, aby ukryć przypadkowe nawiasy w mojej witrynie.

JTS
źródło
@Rudiger czy ten kod zadziałał, aby obejść błąd frameworka SilverStripe?
WST