我想在大多数字段中添加样式表类属性,但不是全部。
public function buildForm(FormBuilder $builder, array $options) { $builder ->add('name_short', null, array('attr' => array('class' => 'rtl')) ) ->add('name_long') ->add('profile_education') ->add('profile_work') ->add('profile_political') ->add('twitter') ->add('facebook') ->add('website') ; }
是否有比将属性array('attr' => array('class' => 'rtl'))
添加到每个字段更简单的方法?
在将字段添加到构建器之后,正在寻找循环字段和设置属性之类的内容。
更像这样(不幸的是,FormBuilder中没有setOption方法):
foreach($builder->all() as $key => $value) { $value->setOption('attr', array('class' => 'rtl')); }
感谢您的任何指示。
答案 0 :(得分: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')));
}
}
答案 1 :(得分:0)
遇到这个并记得我最近发现了一种有效的方法 基本上迭代所有字段,删除并使用合并选项重新添加它们 以下面的例子为例。
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);
}
}