如何在Symfony2中为每个展开的表单窗口小部件添加一个类?

时间:2013-08-02 08:57:42

标签: symfony twig symfony-forms

以下是我试图覆盖的Twig字段:github

我有一个已使用此自定义表单主题修改的复选框列表:

{% block choice_widget_expanded %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
        <div class="checkbox_row">
        {{ form_widget(child) }}
        {{ form_label(child) }}
        </div>
    {% endfor %}
    </div>
{% endspaceless %}
{% endblock choice_widget_expanded %}

我尝试使用{{ form_row(form.fieldName), {'attr':{'class':'myclass'}}) }}

添加课程

但这只会为div#formName_fieldName添加一个类。接下来我尝试使用

添加自定义块
{% block _formName_fieldName_widget %}
{% spaceless %}
    <input type="checkbox" {{ block('widget_attributes') }} value="{{ value }}"  class="myclass_{{ value }}" />

{% endspaceless %}
{% endblock choice_widget_expanded %}

注意我还包含了我希望拥有myclass_1, myclass_2等的值。

这个问题是该块接收一个数组,所以它应该像这样

{% block _fb_post_facebook_pages_widget %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
        {{ form_widget(child) }}
        {{ form_label(child) }}
    {% endfor %}
    </div>
{% endspaceless %}
{% endblock choice_widget_expanded %}

但是如果我想将这个类添加到一个特定的复选框,我需要写这样的东西:

{% block _formName_fieldName_X_widget %}
{% spaceless %}
    <input type="checkbox" {{ block('widget_attributes') }} value="{{ value }}"  class="myclass_{{ value }}" />

{% endspaceless %}
{% endblock choice_widget_expanded %}

其中X将是我对fieldName的值...显然,值可以是任何值,所以我不能只为1-1000000000000的所有值创建块...

任何方式动态地执行此操作?

1 个答案:

答案 0 :(得分:0)

我相信你需要扩展Twig。然后,您可以在PHP中指定代码,并引入条件。

http://twig.sensiolabs.org/doc/advanced.html