ラベルと入力を含むフォームを作成したいのですが、それらのクラスは異なるはずです。以下のコードは、同じ属性で入力のラベルを作成します。
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="" >
ドキュメント で述べたように:
これらの属性は、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'),
));
}
これは新しいかもしれませんが、今これを行う簡単な方法があります:
$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'}
}
)
}}
少なくとも私が使用していた文脈では、上記はもはや正しくありません。 Symfony 2.1でのソリューションは次のとおりです。
{{ form_label(form.item, label|default(null), { 'label_attr': { 'class': 'MYCLASS' } }) }}