我想构建一个带有标签和输入的表单,但它们的类应该是不同的。下面的代码使用相同的attr创建输入标签:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('hours', null ,
array('attr'=>
array(
'placeholder'=>'Working Hours',
'class'=>'ui-spinner-box') ) )
}
在上面的代码中,ui-spinner-box
将输出标签和输入。它甚至会为其标签添加占位符。
那么如何让它分别为标签创建attr
,这样我就可以输出如下内容:
<label class="MYCLASSFOR_LABEL" for="input_id">Hours</label>
<input class="MYCLASSFOR_INPUTS" type="text" id="input_id" name="" value="" >
答案 0 :(得分:87)
如documentation中所述:
您可以在树枝模板或表单构建器中设置这些属性:
Twig模板:
用于symfony 2.1和更新的用途:
{{ form_label(form.hours, null, {'label_attr': {'class': 'foo'}}) }}
在旧版symfony 2.0中曾经是
{{ form_label(form.hours, { 'label_attr': {'class': 'MYCLASSFOR_LABEL'} }) }}
{{ form_widget(form.hours, { 'attr': {'class': 'MYCLASSFOR_INPUTS'} }) }}
表单构建器
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('hours', null, array(
'label_attr' => array('class' => 'MYCLASSFOR_LABEL'),
'attr' => array('class' => 'MYCLASSFOR_INPUTS'),
));
}
答案 1 :(得分:49)
这可能是新的,但现在有一种简单的方法可以做到这一点:
$builder
->add('hours', null , array(
'attr'=>
array(
'placeholder'=>'Working Hours',
'class'=>'MYCLASSFOR_INPUTS')
) ,
'label_attr' => array(
'class' => 'MYCLASSFOR_LABEL'
)
);
您正在寻找的选项是label_attr
。
答案 2 :(得分:7)
这在Symfony 2.3中适用于我:
{{ form_row(form.hours, { 'label': 'Hours:'
,'label_attr': {'class': 'MYCLASSFOR_LABEL'}
,'attr': {'class': 'MYCLASSFOR_INPUTS'}
}
)
}}
答案 3 :(得分:6)
以上不再正确,至少在我使用它的上下文中。在Symfony 2.1中,解决方案是:
{{ form_label(form.item, label|default(null), { 'label_attr': { 'class': 'MYCLASS' } }) }}