Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как настроить элемент CollectionType()?

Автор вопроса: greg0ireОтветов: 1

Этот раздел документации Symfony2 показывает замечательную технику настройки отдельного поля. Я использую его много, но есть один конкретный Type, для которого мне трудно выполнить настройку: CollectionType() Настройка самой коллекции довольно проста, вы можете сделать что-то вроде этого:

{% block _mynamespace_mybundle_mytype_mycollectionfield_row %}
{% if prototype is defined %}
    {% set attr = attr|merge({'data-prototype': form_widget(prototype) }) %}
{% endif %}
{% spaceless %}
    <ul {{ block('widget_container_attributes') }}>
        {% spaceless %}
            {{ form_errors(form) }}
            {% for child in form %}
            <li>
              {{form_widget(child)}}
            </li>
            {% endfor %}
        {% endspaceless %}
        {{ form_rest(form) }}
    </ul>
{% endspaceless %}
{% endblock %}

Но как настроить каждый элемент коллекции? И как вы можете настроить data-prototype с помощью Twig (data-prototype - это специальный атрибут, используемый для добавления новых элементов с помощью js)?

Я попытался сделать что-то вроде этого (для data-prototype):

{% block _mynamespace_mybundle_mytype_mycollectionfield_$$name$$_row %}
customization ok!
{% endblock %}

Но я получаю ошибки, потому что я не знаю, как избежать $

Что касается предметов, я пробовал много вещей:

{% block _mynamespace_mybundle_mytype_mycollectionfield_item_subfield_row %}
customization ok!
{% endblock %}

{% block _mynamespace_mybundle_mytype_mycollectionfield_element_subfield_row %}
customization ok!
{% endblock %}

Ни один из них не работает.

  • Что вы имеете в виду под настройкой прототипа данных с помощью Twig? Kristian Zondervan 17.11.2011

symfonytwig

Ответы

Ответ 1 · greg0ire

Я задал вопрос в системе отслеживания ошибок symfony, и похоже, что решения нет, но хорошим обходным путем является создание собственного типа для каждого подполя, которое вы хотите настроить. См. эту проблему.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы