使用CollectionType自定义表单的表单主题

时间:2016-09-12 14:56:17

标签: php forms symfony symfony-forms

我正在使用symfony,我渲染一个使用集合类型的表单。

在我的config.yml中指定了一个全局表单主题。

例如这一个:

twig:
debug:            "%kernel.debug%"
strict_variables: "%kernel.debug%"
form_themes: 
    - 'foundation_5_layout.html.twig'

如果我在我的树枝模板中设置了一个不同的表单主题,就像这样...

{% form_theme form 'Form/bootstrap_3_layout.html.twig' %}

这会影响我的所有其他表单元素,但不会影响具有Type CollectionType的表单元素。它仍然使用config.yml

中定义的主题

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

不确定这是不是你想要的但是我不使用config.yml表单主题我在每个文件上手动设置它们并根据我想要表单的外观手动渲染所有内容。

输入字段的外观示例(表单类中的名称是答案

{% block _suggest_question_manager_answer_entry_widget %}
    {% spaceless %}
        <div class="multiple-choice-container">
            <div class="row form-group">
                {{ form_label(form.value, null, {'label_attr': {'class': 'col-sm-2 control-label'} } ) }}
                <div class="col-md-12">
                    <div class="input-group">
                        <div class="input-group-addon">
                            <span class="glyphicon glyphicon-record" aria-hidden="true"></span>
                        </div>
                        {{ form_widget(form.value, {'attr': {'class': 'form-control'} } ) }}
                        {{ form_errors(form.value) }}
                        <div class="input-group-btn">
                            <button class="add-answer btn btn-default" aria-label="Add Choice">
                                <span class="glyphicon glyphicon glyphicon-plus" aria-hidden="true"></span>
                            </button>
                            <button class="remove-answer btn btn-default" aria-label="Remove Choice">
                                <span class="glyphicon glyphicon glyphicon-minus" aria-hidden="true"></span>
                            </button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    {% endspaceless %}
{% endblock %}

我如何渲染原型

<script id="answer-template" type="text/template">{{ form_widget(form.answer.vars.prototype) }}</script>

这就是我加载主题的方式(这只是一个wip模板的示例,但是还没有移动模板文件)

{% form_theme form _self %}

我每次都手动选择我的表单主题,而不是使用全局配置,因为在某些时候我遇到了一些问题并且没有留下来解决这个问题。与crud操作有关的问题我得到的是双div包装一个来自我自己的原型html和第二个来自表单主题,这就是为什么我手动渲染每个字段