Symfony 2形成主题与选择字段

时间:2013-10-22 11:02:05

标签: php forms symfony twig

我有问题。我想用旗帜ico做国家选择,但我不知道如何为表格选择创建自定义主题。

我创建了测试表单:

->add('name', 'choice', array('choices' =>array('en' => 'England', 'de' => 'Deutshland')))

接下来在我看来我试试

{% block _send_name_widget %}
    <select>
        {% for f in form %}
            {{ loop.index }}
        {%endfor%}
    </select>
{% endblock%}

{{ form_widget(form.name) }}

在我的html代码中,我得到了:

<select>
 1
 2
</select>

<select>
</select>
你可以告诉我为什么吗? 如何只使用参数渲染一个选择?

2 个答案:

答案 0 :(得分:3)

我的choice_widget_options模板中不存在变量“options”。事实是“选项”不是变量的正确名称。如果你看一下\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\views\Form\choice_widget_options.html.php,你会发现Symfony使用了一个名为'choices'的变量。

上一代码的更正版本为:

{% block choice_widget_options %}
{% spaceless %}
    {% for group_label, choice in choices %}
        {% if choice is iterable %}
            <optgroup label="{{ group_label|trans({}, translation_domain) }}">
                {% set options = choice %}
                {{ block('choice_widget_options') }}
            </optgroup>
        {% else %}
            <option value="{{ choice.value }}"{% if choice is selectedchoice(value) %} selected="selected"{% endif %}>
              <img src="/images/flags/{{ choice.label }}.jpg" />
              {{ choice.label|trans({}, translation_domain) }}
        </option>
    {% endif %}
{% endfor %}
{% endspaceless %}
{% endblock choice_widget_options %}

答案 1 :(得分:1)

覆盖选择模板:

{% block choice_widget_options %}
{% spaceless %}
    {% for group_label, choice in choices %}
        {% if choice is iterable %}
            <optgroup label="{{ group_label|trans({}, translation_domain) }}">
                {% set options = choice %}
                {{ block('choice_widget_options') }}
            </optgroup>
        {% else %}
            <option value="{{ choice.value }}"{% if choice is selectedchoice(value) %} selected="selected"{% endif %}>
                  <img src="/images/flags/{{ choice.label }}.jpg" />
                  {{ choice.label|trans({}, translation_domain) }}
            </option>
        {% endif %}
    {% endfor %}
{% endspaceless %}
{% endblock choice_widget_options %}

有关Symfony2 docs

中表单主题的更多信息