Передайте пользовательское значение каждому входу в форму Symfony (тип - выбор)

0

Я пытаюсь найти лучший подход к этой проблеме. Я запрашиваю базу данных, чтобы получить список значений, которые я использую для создания поля формы. В действительности, однако, он будет создавать около 12 тегов <input type="checkmark"/>. Мне нужно предоставить URL-адрес изображения, который также находится в базе данных, каждой галочке (на самом деле связанная с ней метка).

Кажется, что это был бы кусок пирога, если бы я рисовал каждый <input/> отдельно, просто создавая расширение формы. Я не строю их по отдельности, и не кажется правильным перебирать массив (который Propel предоставил), чтобы создать как можно больше флажков, даже если бы я был.

Тип поля формы model Propel прост в использовании, но передает данные столбца image прямо в метку, которая совершенно непрактична. Это делает метку в строке, что-то вроде (взрывающаяся строка также не кажется хорошим вариантом):

Label => "
    ID: 2
    Title: Label of Checkmark
    Parent ID: null
    Image: ek9dkB.jpeg" 

Итак, какой лучший способ передать параметр каждому ребенку, чтобы я мог получить доступ к нему в моих fields.html.twig?

Релевантный построитель форм (PictureCheckbox - это мой настраиваемый тип поля, поэтому он отображает собственный шаблон формы Twig):

$builder->add('skills', new PictureCheckbox(), array(
      'choices'     => $choices,
      'required'    => true,
      'label'       => 'What are your skills?',
      'multiple'    => true,
      'expanded'    => true,
    ));

Я использовал тип модели, а также выше, который очень похож по стилю, но идея такая же.

Здесь field.html.twig где я создал новый тип формы. {% block picture_checkbox_widget%}

    {% if expanded %}
        {% for child in form.children %}
            {% spaceless %}
            <label for="{{ id }}">
                {# Most of this would change, but is here for example: #}
                {{ form_label(child.label) }}
                    {% set file = path.from.child %}
                    <img src="{{ asset('uploads' ~ file) }}" alt="Test Image" />
            </label>
            {% endspaceless %}
        {% endfor %}
            <input type="checkbox" id="{{ id }}"{{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
    {% endif %}
{% endblock %}

Я использую Symfony 2 (.6) с Propel как ORM. Я был бы рад добавить информацию, если бы упустил что-то важное.

Может быть, choice_list - это мой ответ? Но кажется, что есть способ добавить переменную в список, который я вижу, когда я дамп ребенка: {% dump(child) %}.

Теги:
twig
symfony-forms

1 ответ

0
Лучший ответ

Кажется, я нашел ответ. Я построил ChoiceList и добавил к нему изображение и название. Я уверен, что есть лучший способ, но, похоже, он работает хорошо, и кажется логичным с точки зрения, что изображение находится в <label/> так что доставка его как части label естественна.

Я попробую уточнить, когда у меня будет больше времени.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню