Symfony Form / FormBuilder:如何向多个表单字段添加选项或属性

vir*_*ize 5 symfony-forms symfony

我想向大多数字段添加样式表类属性,但不是全部。

公共函数 buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('name_short', null, ['attr' => ['class' => 'rtl']] )
        ->添加('name_long')
        ->添加('个人资料教育')
        ->添加('个人资料工作')
        ->添加('个人资料政治')
        ->添加('推特')
        ->添加('脸书')
        ->添加('网站')
    ;
}

['attr' => ['class' => 'rtl']]有没有比向每个字段添加属性更简单的方法?寻找类似循环字段并在将字段添加到构建器后设置属性的内容。

感谢您的指点。

vir*_*ize 2

遇到这个并记得我最近找到了一种有效的方法。
基本上迭代所有字段,删除并使用合并选项重新添加它们。
以下面这个例子为例。

public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('name_short')
        ->add('name_long')
        ->add('profile_education')
        ->add('profile_work')
        ->add('profile_political')
        ->add('twitter')
        ->add('facebook')
        ->add('website')
    ;
    
    $commonOptions = array('attr' => array('class' => 'rtl'));
    
    foreach($builder->all() as $key => $field)
    {
        $options = $field->getOptions();
        $options = array_replace_recursive($options, $commonOptions);
        
        $builder->remove($key);
        $builder->add($key, get_class($field->getType()->getInnerType()), $options);
    }    
}   
Run Code Online (Sandbox Code Playgroud)

编辑:更新为与 Symfony 3、4、5 和 6 配合使用。感谢@Massimiliano Arione