php - Symfony2,如何使表单标签类/属性与​​其输入不同?

标签 php forms symfony

我想构建一个带有标签和输入的表单,但它们的类应该不同。下面的代码为具有相同属性的输入创建标签:

 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="" >

最佳答案

documentation 中所述:

  • 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'),
    ));
}

关于php - Symfony2,如何使表单标签类/属性与​​其输入不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919619/

相关文章:

java - 通过category_name从PHP获取到Android

php - CakePHP不止一个属于

php - 根据在多选框中选择的值将表单通过电子邮件发送到特定的电子邮件地址

ASP.net 表单复式输入

javascript - symfony2 + Assets : how to restrict a css to a print when using {% javascripts %}

mysql - Doctrine : Which syntax for GROUP_CONCAT with a CASE WHEN?

symfony - 使用 nginx 对符号链接(symbolic link)静态文件的更新无效

php - Symfony2 表单和集合 - 一个 Order,OrderItem 实现

PHP 页面不显示 mysqli fetch

php - 如何创建一个搜索功能来搜索 mysql 数据库中的表