使用symfony2表单中的现有类添加html类值?

时间:2014-09-14 08:43:04

标签: forms symfony twig

我已经在我的FormType中定义了一些字段,每个表单元素的类值如下所示

 $builder->add('name', 'text', array(
            'label' => 'Name',
            'attr' => array('class' => 'form-control'),
        ));

在twig文件中写得像这样

{{ form_widget(form.name) }}

此代码生成这样的输出

 <input type='text' name='name' class='form-control' />

现在我想在此元素中添加额外的类,如error类,它会生成以下输出

<input type='text' name='name' class='form-control error' />

为了生成上面的输出,我在Twig文件中编写了类似的代码 -

{{ form_widget(form.name,{attr:('class'=>'error')}) }}

此代码生成以下输出 -

<input type='text' name='name' class='error' />

所以我很困惑,应该得到什么样的预期结果。在html中为我的表单元素添加额外的类值。 我的预期输出是

<input type='text' name='name' class='form-control error' />

2 个答案:

答案 0 :(得分:0)

您可以在class属性中添加多个类。

像这样:

$builder->add('name', 'text', array(
        'label' => 'Name',
        'attr' => array('class' => 'form-control error'),
    ));

答案 1 :(得分:0)

根据您对@ Moshikaro的回答的评论,您可能不得不使用流控制来构建类字符串,无论是在Twig还​​是Controller中:

<强>枝条

{% set errorClass = '' %}
{% if errorTest %}
    {% set extraClass = ' error' %}
{% endif %}
{{ form_widget(form.name,{attr:('class'=>'form-control'~errorClass)}) }}

或者

{% set errorClass = '' %}
{% if errorTest %}
{% extraClass = ' error' %}
{% endif %}
{{ form_widget(form.name,{attr:('class'=>form.config.attributes.class~errorClass)}) }}

<强>控制器

$errorClass = "";
if ($test)
{
    $errorClass += " error";
}
$cssClasses = "form-control" + $errorClass;

$builder->add('name', 'text', array(
        'label' => 'Name',
        'attr' => array('class' => $cssClasses),
    ));

无论如何,你明白了。我还没有能够测试任何一个。