Symfony2中,如何使一个表单标签类/ ATTR比输入不同?(Symfony2, How to

2019-07-29 18:56发布

我想建立与标签和输入的形式,但是类人应该是不同的。 下面的代码生成与同一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="" >

Answer 1:

作为中提到的文档 :

  • ATTR:将被呈现为HTML键值阵列上的字段属性
  • label_attr:将被呈现为HTML键值阵列在标签上的属性

您可以在树枝模板或表单生成的属性:

嫩枝模板:

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


Answer 2:

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

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

你要找的选项label_attr



Answer 3:

这对我的作品在Symfony的2.3:

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


Answer 4:

以上是不再是正确的,在我用它的背景下,至少。 在Symfony的2.1的解决方案是:

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


文章来源: Symfony2, How to make a form label class/attr different than its input?