Symfony2,如何使表单标签类/attr与其输入不同?

2022-08-30 11:56:11

我想用标签和输入构建一个表单,但它们的类应该不同。下面的代码为输入创建具有相同 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="" >

答案 1

文档中所述:

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

您可以在 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'),
    ));
}

答案 2

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

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

您要查找的选项是 。label_attr


推荐