如何在symfony中选择字段标签?

时间:2016-03-03 10:39:28

标签: symfony-forms symfony

我的表单中有多个复选框。我需要设置每个复选框的样式'标签。我想要做的是用choice_label_attr字段下面的代码描述的:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
    ->add('type', ChoiceType::class, array(
        'expanded' => true,
        'multiple' => false,

        'choices' => array(
            'Friend' => 'friend',
            'Guide' => 'guide'
        ),

        // Invalid code, it serves for demonstration purposes
        'choice_label_attr' => array(
            'class' => 'btn'
        )
    ));
}

如何实现这种效果?

修改

可以在树枝模板中写下这样的内容:

{{ form_label(form.name, 'Your Name', {'label_attr': {'class': 'foo'}}) }}

但是,这种技术很容易出现代码重复。

3 个答案:

答案 0 :(得分:3)

choice_label_attr选项可能是symfony 3.1的一部分。

您可以看到PR here

答案 1 :(得分:1)

我有同样的问题,我在.twig文件中设置了样式。 所以我的表格看起来像这样:`

 <div class="field">
    <div class="foo">
    {{ form_label(form.quantity) }}
    {{ form_errors(form.quantity) }}
    {{ form_widget(form.quantity) }}
   </div>
</div>
<div class="field">
    {{ form_label(form.amount) }}
    {{ form_errors(form.amount) }}
    {{ form_widget(form.amount) }}
</div>`

你也可以这样做:

<div class="field">
  <div = class="foo">
    {{ form_row(form.quantity) }}
  </div>
</div>
<div class="field">
    {{ form_row(form.amount) }}
</div>

以下是Symfony Doc:Twig Template Form Function and Variable Reference

直接向字段标签添加类:在Ressources中创建目录以覆盖FOSUserbundle的模板。 Ressources-&GT; FOSUserbundle-&GT;&则须─GT;安全 - &GT; login.html.twig 这是我登录页面的代码。您可能必须为每个表单执行此操作。

    {% extends "FOSUserBundle::layout.html.twig" %}

{% trans_default_domain 'FOSUserBundle' %}

{% block fos_user_content %}
{% if error %}
    <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}

<form action="{{ path("fos_user_security_check") }}" method="post">
    <div class="field">
    <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
    </div>
    <div class="field">
    <label for="username">{{ 'security.login.username'|trans }}</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
    </div>
        <div class="field">
    <label for="password">{{ 'security.login.password'|trans }}</label>
    <input type="password" id="password" name="_password" required="required" />
        </div>
            <div class="field">
    <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
    <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
            </div>
                <div class="field">
    <input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
</form>
{% endblock fos_user_content %}

答案 2 :(得分:0)

使用

    'label_attr' => array(
        'class' => 'btn'
    )

而不是

    'choice_label_attr' => array(
        'class' => 'btn'
    )