Symfony2, How to make a form label class/attr different than its input?

后端 未结 4 893
忘了有多久
忘了有多久 2021-01-30 05:31

I would like to build a form with label and inputs, but the class of them should be different. Code below creates the label for the input with same attr:

 publi         


        
相关标签:
4条回答
  • 2021-01-30 05:45

    As mentioned in the documentation:

    • attr : A key-value array that will be rendered as HTML attributes on the field
    • label_attr: A key-value array that will be rendered as HTML attributes on the label

    You can set those attributes in twig template or in form builder:

    Twig template:

    • for symfony 2.1 and newer use:

      {{ form_label(form.hours, null, {'label_attr': {'class': 'foo'}}) }}
      
    • in the legacy symfony 2.0 it used to be

      {{ form_label(form.hours, { 'label_attr': {'class': 'MYCLASSFOR_LABEL'} }) }}
      {{ form_widget(form.hours, { 'attr': {'class': 'MYCLASSFOR_INPUTS'} }) }}
      

    Form builder

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('hours', null, array(
            'label_attr' => array('class' => 'MYCLASSFOR_LABEL'),
            'attr'       => array('class' => 'MYCLASSFOR_INPUTS'),
        ));
    }
    
    0 讨论(0)
  • 2021-01-30 05:56

    The above is no longer correct, at least in the context I was using it. In Symfony 2.1 the solution is:

    {{ form_label(form.item, label|default(null), { 'label_attr': { 'class': 'MYCLASS' } }) }}
    
    0 讨论(0)
  • 2021-01-30 06:08

    This works for me in Symfony 2.3:

    {{ form_row(form.hours,  {   'label': 'Hours:'
                                ,'label_attr': {'class': 'MYCLASSFOR_LABEL'}
                                ,'attr': {'class': 'MYCLASSFOR_INPUTS'} 
                            }
               )
    }}
    
    0 讨论(0)
  • 2021-01-30 06:11

    This may be new, but there's an easy way to do this now:

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

    The option you're looking for is label_attr.

    0 讨论(0)
提交回复
热议问题