4

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

公共函数 buildForm(FormBuilder $builder, array $options)
{
    $建造者
        ->add('name_short', null, array('attr' => array('class' => 'rtl')) )
        ->添加('name_long')
        ->添加('profile_education')
        ->添加('profile_work')
        ->添加('profile_political')
        ->添加(“推特”)
        ->添加(“脸书”)
        ->添加('网站')
    ;
}

有没有比将属性添加array('attr' => array('class' => 'rtl'))到每个字段更简单的方法?

在将字段添加到构建器后,正在寻找类似循环字段和设置属性的东西。

更像这样(遗憾的是 FormBuilder 中没有 setOption 方法):

foreach($builder->all() as $key => $value) {
    $value->setOption('attr', array('class' => 'rtl'));
}

感谢您的任何指示。

4

2 回答 2

1

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

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_merge_recursive($options, $commonOptions);

        $builder->remove($key);
        $builder->add($key, $field->getName(), $options);
    }    
}   
于 2014-01-13T16:41:53.900 回答
0

您可以在构建表单时执行此操作。只需将字段名称保存在数组中。如果您需要分配不同的字段类型,请改用关联数组。

public function buildForm(FormBuilder $builder, array $options)
{
    $fields = array('name_short', 'profile_education', 'profile_work', 'profile_political', 'twitter', 'facebook', 'website');

    foreach ($fields as $field) {
        $builder->add($fields, null, array('attr' => array('class' => 'rtl')));
    }
}
于 2013-05-09T20:21:34.393 回答