Доступ к атрибутам объекта в формах Symfony - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь отобразить список курсов с флажком, позволяющим пользователю выбрать любое количество курсов из списка. Я новичок в Symfony и пытаюсь следовать подходу к форме, но не понимаю, как отобразить дополнительные атрибуты объекта, кроме использования choice_label.

Если бы я только проходил объекты курса, я мог бы просто использовать:

Шаблон:

<form>
    {% for course in courses %}
        <div class="row">
            <div><input type="checkbox" name="course[]" value="{{ course.id }}"></div>
            <div>{{ course.name }}</div>
            <div>{{ course.description }}</div>
            <div>{{ course.semester }}</div>
        </div>
    {% endfor %}
</form>

При использовании конструктора форм мой шаблон будет выглядеть так:

{{ form_start(form) }}
        <div class="row">
            <div>{{ form_row(form.courses) }}</div>
        </div>
{{ form_end(form) }}

Как я могу получить доступ к этим дополнительным атрибутам объекта (имя, описание и т. Д.) В строке формы? Есть ли причина использовать конструктор форм в этом случае вместо первого «ручного» подхода? Таким образом, мне нужно детальное управление атрибутами объекта в данной строке формы, и одного атрибута choice_label кажется недостаточно. Какое потенциальное решение?

1 Ответ

1 голос
/ 03 июля 2019

Во-первых, для доступа к каждой опции метки выбора это довольно просто ... потому что form.courses представляет собой массив .Вы можете получить доступ к отдельным флажкам, выполнив следующее:

{{ form_widget(form.courses[0]) }}

И вы можете использовать цикл для индивидуального доступа к ним.А для настройки рендеринга ваших форм вы можете использовать функции form_errors , form_label и form_help , поэтому ваш конечный код будет выглядеть примерно так:

{{ form_start(form) }}
    {{ form_errors(form) }}
    {% for course in form.courses %}
        <div class="row">
            {{ form_widget(course) }}
            {{ form_label(course) }}
        </div>
    {% endfor %}
    {{ form_help(form.courses) }}
{{ form_end(form) }}

Примечание: Метка - это значение ключа в массиве, передаваемое параметру «choices» в построителе форм.

Источники:

Как настроить отображение форм: https://symfony.com/doc/current/form/form_customization.html

...