web-dev-qa-db-ja.com

Symfony2、フォームラベルクラス/ 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="" >
37
PMoubed

ドキュメント で述べたように:

  • attr:フィールドのHTML属性としてレンダリングされるキーと値の配列
  • label_attr:ラベル上のHTML属性としてレンダリングされるキーと値の配列

これらの属性は、twigテンプレートまたはフォームビルダーで設定できます。

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'),
    ));
}
89
a.aitboudad

これは新しいかもしれませんが、今これを行う簡単な方法があります:

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

お探しのオプションはlabel_attr

49
Jeremy Warne

これはSymfony 2.3で動作します:

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

少なくとも私が使用していた文脈では、上記はもはや正しくありません。 Symfony 2.1でのソリューションは次のとおりです。

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