Symfony2,如何使表单标签类/ attr不同于其input?

我想用标签和input来构build一个表单,但是它们的类别应该是不同的。 下面的代码用相同的attr创buildinput的标签:

public function buildForm(FormBuilder $builder, array $options) { $builder ->add('hours', null , array('attr'=> array( 'placeholder'=>'Working Hours', 'class'=>'ui-spinner-box') ) ) } 

在上面的代码中, ui-spinner-box将被输出为标签和input。 它甚至会为其标签添加占位符。

那么如何使它为标签分别创buildattr ,所以我可以输出如下所示:

 <label class="MYCLASSFOR_LABEL" for="input_id">Hours</label> <input class="MYCLASSFOR_INPUTS" type="text" id="input_id" name="" value="" > 

正如文件中所提到的:

  • attr:键值数组,将在字段中呈现为HTML属性
  • label_attr:将在标签上呈现为HTML属性的键值数组

您可以在树枝模板或表单构build器中设置这些属性:

枝杈模板:

  • 为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'), )); } 

这可能是新的,但现在有一个简单的方法来做到这一点:

 $builder ->add('hours', null , array( 'attr'=> array( 'placeholder'=>'Working Hours', 'class'=>'MYCLASSFOR_INPUTS') ) , 'label_attr' => array( 'class' => 'MYCLASSFOR_LABEL' ) ); 

你正在寻找的选项是label_attr

这在Symfony 2.3中适用于我:

 {{ form_row(form.hours, { 'label': 'Hours:' ,'label_attr': {'class': 'MYCLASSFOR_LABEL'} ,'attr': {'class': 'MYCLASSFOR_INPUTS'} } ) }} 

以上是不正确的,至less在我使用它的上下文中。 在Symfony 2.1中,解决scheme是:

 {{ form_label(form.item, label|default(null), { 'label_attr': { 'class': 'MYCLASS' } }) }}