метка поля формы отображается дважды - PullRequest
0 голосов
/ 06 февраля 2019

Я использую макрос для отображения коллекции видео в моей форме.

Форма

{% import "macros/prototype.html.twig" as prototype %}

{{ form_start(form) }}
    <div class="row">
        <div class="col-md-6">
            {{ form_row(form.title) }}
            {{ form_row(form.description) }}
            <fieldset class="form-group">
                {{ form_label(form.videos) }}
                <div id="course_videos" class="collection_holder" data-prototype="{{ prototype.tagCollectionLinkItem(form.videos.vars.prototype)|e }}">
                    {% for video in form.videos.children %}
                        {{ prototype.tagCollectionLinkItem(video) }}
                    {% endfor %}
                </div>
                <button type="button" id="add-video-btn" data-target-collection="#{{ form.videos.vars.id }}" class="btn btn-sm btn-info"><i class="la la-plus"></i> {{ 'course.buttons.add_video' | trans({}, 'labels') }}</button>
            </fieldset>
        </div>
    </div>
    <hr>
    <input type="submit" class="btn m-btn--pill at-btn--primary pull-right" value="{{ button_name }}">
{{ form_end(form) }}

Макрос

{% macro tagCollectionFileItem(item) %}
<fieldset class="form-group">
    <div id="{{ item.vars.id }}">
    {% if item.uploadedFile.vars.file_url or item.uploadedFile.vars.image_url %}
        {{ form_errors(item.uploadedFile) }}
        {{ form_widget(item.uploadedFile, {'attr': {'hidden': true}}) }}
    {% else %}
        <div class="custom-file">
            {{ form_widget(item.uploadedFile) }}
            {{ form_label(item.uploadedFile, item.uploadedFile.vars.label, {'label_attr': {'class': 'custom-file-label'}}) }}
        </div>
    {% endif %}
    </div>
</fieldset>
{% endmacro %}

form_end заставляет метку form.videos отображаться дважды.Я думаю, потому что я никогда не использовал form_widget(form.videos), поэтому form_end заставляет его появиться.Должен ли я заменить свой макрос на тему формы?

1 Ответ

0 голосов
/ 06 февраля 2019

Поскольку вы никогда не рендерили form.video с виджетом, вам нужно установить поле как отрендеренное.Просто используйте {{ do form.videos.setRendered }}, и вы готовы пойти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...