首页 > 解决方案 > 如何自定义 Symfony 表单模板中的多个字段?

问题描述

我在 Symfony 3.4 项目中有一个表单。我可以正确渲染它,这就是我得到的:

<form name="registration" method="post">
    <div id="registration">
        <div>
            <label for="registration_email" class="required">E-mail címed</label>
            <input type="email" id="registration_email" name="registration[email]" required="required" class="form-control">
        </div>
        <div>
            <label for="registration_name" class="required">Vezetékneved és keresztneved</label>
            <input type="text" id="registration_name" name="registration[name]" required="required" class="form-control">
        </div>
        <div>
            <label for="registration_password" class="required">Jelszó</label>
            <input type="password" id="registration_password" name="registration[password]" required="required" class="form-control">
        </div>
        <div>
            <label for="registration_password_repeat" class="required">Jelszó újra</label>
            <input type="password" id="registration_password_repeat" name="registration[password_repeat]" required="required" class="form-control">
        </div>
        <div>
            <button type="submit" id="registration_submit" name="registration[submit]" class="btn btn-primary">Regisztráció</button>
        </div>
        <input type="hidden" id="registration__token" name="registration[_token]" value="r8KLMX7OCB6tDWJzHOp8_U-P4MjLI3PiOLTeJsvUXTY">
    </div>
</form>

我想让每个表单字段都包裹在一个具有“ form-group”类的 div 中。为此,我必须一一自定义所有字段类型,例如:

{% block text_widget %}
    <div class="form-group">
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}

{% block password_widget %}
    <div class="form-group">
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}

{% block email_widget %}
    <div class="form-group">
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}

有没有办法将此应用于所有类型的字段类型?,例如:

{% block *_widget %}
    <div class="form-group">
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}

标签: formssymfony

解决方案


我找到了答案。首先,我想覆盖rownot widget,而不是命名特定类型,我必须使用form_row,所以{% block text_row %}我需要{% block form_row %}并且这适用于所有类型的输入行。


推荐阅读