SilverStripe PHP Forms - Якщо я вкладу SelectionGroup всередині FieldGroup, одна з пов’язаних Radioction Box SelectionGroup не з’являється. Чому?


122

У мене форма, яка має два FieldGroups, а в одній з FieldGroups я SelectionGroup.

Показ SelectionGroup_Itemвідображається у формі, 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

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 у мене з’явилися випадкові дужки, коли хтось декілька разів надсилав нову форму під різними номерами ідентифікаторів за часткою. Я використовував такий підхід, щоб приховати випадкові дужки на своєму сайті.


@Rudiger зробив цей код, щоб уникнути помилки FrameworkStripe?
СТС
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.