Как добавить оболочку вокруг нескольких флажков в форме Symfony 4

У меня есть список флажков, созданный в форме со следующим

->add('ISPreNbStudents', ChoiceType::class, [
            'multiple' => false,
            'choices'  => [
                '1' => 1,
                '2' => 2,
                '3' => 3,
                '4' => 4,
                '5' => 5,
            ],
            'expanded' => true
        ])

Затем я могу отобразить это в файле ветки следующим образом: {{ form_widget(form.ISOptMonths) }}

Проблема в том, что теперь он отображает список меток и ввода, как это

<input type = "radio" id = "availability_ISPreNbStudents_0" name = "availability[ISPreNbStudents]" value = "1">
<label for = "availability_ISPreNbStudents_0">1</label> 
<input type = "radio" id = "availability_ISPreNbStudents_1" name = "availability[ISPreNbStudents]" value = "2">
<label for = "availability_ISPreNbStudents_1">2</label>

Мне нужно поместить обертку вокруг каждой метки/входа, как это

<div class = "styled-input-single">
    <input type = "checkbox" name = "case-1" id = "1" />
    <label for = "1">1</label>
</div>
<div class = "styled-input-single">
    <input type = "checkbox" name = "case-2" id = "2" />
    <label for = "2">2</label>
</div>

Как я могу этого добиться?

JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
1
0
893
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны использовать Symfony Настройка рендеринга формы.

Таким образом, вы можете получить доступ к полю формы по полю, например:

{{ form_start(form) }}
    <div class = "my-custom-class-for-errors">
        {{ form_errors(form) }}
    </div>

    <div class = "row">
        <div class = "col">
            {{ form_row(form.task) }}
        </div>
        <div class = "col" id = "some-custom-id">
            {{ form_row(form.dueDate) }}
        </div>
    </div>
{{ form_end(form) }}

Вы также можете отображать поля вручную:

<div class = "styled-input-single">
{{ form_widget(form.name_of_form_element) }}
{{ form_label(form.name_of_form_element) }}
<!-- and for errors of this field -->
{{ form_errors(form.name_of_form_element) }}
</div>

Для рендеринга поля выбора или опции вручную перейдите по этой ссылке:
https://symfonycasts.com

Это не будет работать с несколькими вариантами флажков

Leeroy 17.05.2019 08:13

Я обновил свой ответ двумя новыми сведениями и ссылкой на то, где вы найдете пример рендеринга выбора и так далее. В основном вы можете получить доступ к каждому атрибуту вашего поля. Идентификаторы, значения, имена и т. д.... Надеюсь, это поможет.

Thomas Baier 17.05.2019 08:42
Ответ принят как подходящий

Я наконец нашел решение:

Вот как вы печатаете свой список:

{{ form_row(registrationForm.firstRecourse) }}

Теперь вы хотите добавить обертку вокруг каждой опции:

<div class = "row">
    {{ form_label(registrationForm.ISPreNbStudents) }}
    {% for checkbox in registrationForm.ISPreNbStudents.children %}
        <div class = "styled-input-single">
            {{ form_widget(checkbox) }}
            {{ form_label(checkbox) }}
            {{ form_errors(checkbox) }}
        </div>
    {% endfor %}
</div>

Другие вопросы по теме