如何更改Symfony 2/Twig中的form_row行为

Roe*_*zen 6 symfony twig

默认情况下,a form_row(form.name)呈现为:

<div><label for="form_name" class=" required">Name</label><input type="text" id="form_name" name="form[name]" required="required" maxlength="45" value=""></div>
Run Code Online (Sandbox Code Playgroud)

我如何/在哪里可以改变行为,form_row()例如:

<div class="someClassName"><label for="form_name" class=" required">Name</label></div><div class="someOtherClassName"><input type="text" id="form_name" name="form[name]" required="required" maxlength="45" value=""></div>
Run Code Online (Sandbox Code Playgroud)

mkr*_*arz 17

您可以查看以下网址:http://symfony.com/doc/2.0/cookbook/form/form_customization.html#cookbook-form-theming-methods

有一个关于自定义form_row()的段落.

这是一个简单的例子.默认情况下,form_row()会创建一个简单的html结构,如下所示:

枝条:

{{ form_row(form.email, { 'label' : 'Your email address' }) }}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div>
    <label for="register_email" class=" required">Your email address</label>
    <input type="email" id="register_email" name="register[email]" required="required" />
</div>
Run Code Online (Sandbox Code Playgroud)

因此,根据文档,您可以创建一个新的树枝模板,并在字段和标签周围添加class ="form_row".将它放在YourBundle/views/Form/fields.html.twig中,并将以下代码放在其中:

{% block field_row %}
<div class="form_row">
    {{ form_label(form) }}
    {{ form_errors(form) }}
    {{ form_widget(form) }}
</div>
{% endblock field_row %}
Run Code Online (Sandbox Code Playgroud)

在模板文件中,添加以下行:

{% form_theme form 'YourBundle:Form:fields.html.twig' %}
Run Code Online (Sandbox Code Playgroud)

现在,将使用您创建的文件中的form_row模板,并将返回以下HTML代码:

<div class="form_row">
    <label for="register_email" class=" required">Email</label>        
    <input type="email" id="register_email" name="register[email]" required="required" />
</div>
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助.