通过树枝模板在某些标签中添加类?

时间:2014-12-02 05:34:13

标签: php symfony twig

为表单标记添加类

我做了这样的表格

    $form = $this->createFormBuilder()      
    ->add('name')
    ->add('tel')
    ->add('save','submit')
    ->getForm();
index.html.twig中的

  {{ form_start(form)}}
  {{ form_rest(form)}}
  {{ form_end(form)}} 

通常效果很好

但有时我想添加类来形成标签 像这样

<form class=“niceform”>

<button type="submit" class="btn btn-primary">

我怎么能通过formbuilder和twig模板来做这类事情?

3 个答案:

答案 0 :(得分:3)

通过Doc:http://symfony.com/doc/current/reference/forms/twig_reference.html#form-widget-view-variables

form_widget(视图,变量)

{# render a widget, but add a "foo" class to it #}
{{ form_widget(form.name, {'attr': {'class': 'foo'}}) }}

答案 1 :(得分:1)

或者,如果你不喜欢在Twig中做这些事情,你也可以在php中将你的formbuilder添加到这个类中。

$form = $this->createFormBuilder()      
    ->add('name', 'text', array(
        'attr' => array(
            'class' => 'foo'
        )
    ))
    ->add('tel')
    ->add('save','submit')
    ->getForm();

答案 2 :(得分:0)

如果要将类foo添加到表单元素(标记),则可以使用语法:

{{ form(form, { 'attr': {'class': 'foo'} }) }}

如果您想对您网站中的所有表单执行此操作,则最好使用Form themig。查看文件form_div_layout.html.twig。在这里你可以看到小部件。找到{%block form_start%}并将类添加到表单元素

{# your twig file #}
{% form_theme form _self %}

{% block form_start -%}
    {% set method = method|upper %}
    {%- if method in ["GET", "POST"] -%}
        {% set form_method = method %}
    {%- else -%}
        {% set form_method = "POST" %}
    {%- endif -%}
    <form name="{{ name }}" class="myclass" method="{{ form_method|lower }}" action="{{ action }}"{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}{% if multipart %} enctype="multipart/form-data"{% endif %}>
    {%- if form_method != method -%}
    <input type="hidden" name="_method" value="{{ method }}" />
    {%- endif -%}
{%- endblock form_start %}

更好的选择是在单独的文件中使用模板。 http://symfony.com/doc/current/cookbook/form/form_customization.html#form-theming