SilverStripe PHP Forms - если я вложу SelectionGroup в FieldGroup, один из связанных Radio Box SelectionGroup_Items не появится. Зачем?

122

У меня есть форма, в которой два FieldGroups, и в одной из FieldGroupних есть SelectionGroup.

В SelectionGroup_Items проявляется в виде FieldGroupно коробки радио , чтобы выбрать один из вариантов не показывает. Если я удалю, FieldGroupон снова заработает.

Я посмотрел на рамочные шаблонов, и если я изменю FieldGroup_holder.ss SmallFieldHolderна FieldHolderрадио коробки появляются снова и работать правильно. Я пробовал следовать шаблонам, чтобы увидеть, какой из них не подчиняется, SelectionGroupно я все время теряюсь.

Вот пример кода

$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
Похоже, у SelectionGroup нет SelectionGroup_small.ssшаблона, который используется при вложении полей. Просто создайте его в своей теме и измените. Также может быть стоит поднять вопрос на github
wmk
1
@wmk не очень повезло с этим. Что еще я могу сделать, чтобы заставить его работать?
Рудигер
1
Я также добавил выпуск мерзавец github.com/silverstripe/silverstripe-framework/issues/6637
Рудигер
1
Это не лучший вопрос, и я не знаю, как он получил 57 голосов, особенно с учетом низкого количества просмотров, но я думаю, что из-за этого он никуда не денется. Ваша проблема связана с сгенерированным HTML-кодом, но вы его не предоставляете или не предоставляете пример желаемого вывода HTML. Ваш образец кода синтаксически недействителен, и нет контекста относительно того, где он используется. Если вы каким-то образом решили это, вы должны опубликовать ответ; если проблема больше не актуальна или не воспроизводима, вы должны удалить вопрос.
miken32 06
6
@ miken32 это связано именно с фреймворком SilverStripe (отсюда и тег), и в репозитории GitHub была опубликована ошибка (ссылка в комментариях). Причина отсутствия html в том, что нет шаблона html для данных функций, это ошибка. Кроме точки с запятой в конце, я понятия не имею, что вы говорите о синтаксической недействительности. Любой, кто знаком с фреймворком, знает его контекст. Это все еще открытая ошибка, которую легко воспроизвести.
Рудигер

Ответы:

1

Вы можете добавить еще один набор полей, а затем установить для него атрибуты id="hidden_field" aria-hidden="true". В документе css вы можете сделать следующее.

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

Это должно скрыть поведение запроса SilverStripe Framework. В моих собственных php-формах у меня появлялись случайные скобки всякий раз, когда кто-то отправлял новую форму много раз под разными номерами part-id. Я использовал этот подход, чтобы скрыть случайные скобки на моем сайте.

JTS
источник
@Rudiger помог ли этот код обойти ошибку фреймворка SilverStripe?
СТС