Symfony2,如何使表单标签类/ attr不同于其input?
我想用标签和input来构build一个表单,但是它们的类别应该是不同的。 下面的代码用相同的attr创buildinput的标签:
public function buildForm(FormBuilder $builder, array $options) { $builder ->add('hours', null , array('attr'=> array( 'placeholder'=>'Working Hours', 'class'=>'ui-spinner-box') ) ) }
在上面的代码中, ui-spinner-box
将被输出为标签和input。 它甚至会为其标签添加占位符。
那么如何使它为标签分别创buildattr
,所以我可以输出如下所示:
<label class="MYCLASSFOR_LABEL" for="input_id">Hours</label> <input class="MYCLASSFOR_INPUTS" type="text" id="input_id" name="" value="" >
正如文件中所提到的:
- attr:键值数组,将在字段中呈现为HTML属性
- label_attr:将在标签上呈现为HTML属性的键值数组
您可以在树枝模板或表单构build器中设置这些属性:
枝杈模板:
-
为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'} } ) }}
以上是不正确的,至less在我使用它的上下文中。 在Symfony 2.1中,解决scheme是:
{{ form_label(form.item, label|default(null), { 'label_attr': { 'class': 'MYCLASS' } }) }}