如何将相同的选项传递给Symfony2表单的所有字段

时间:2015-02-17 15:44:34

标签: php forms symfony

我有一个看起来像这样的symfony表单,我需要将相同的选项传递给每个字段。

  • 我需要将label设置为true,因为我使用的elaotranslationformbundle不是全局的,仅适用于某些表单。
  • 我需要在所有字段上使用相同的类,因为我使用的是bootstrap。
  • 我需要根据表单上的选项将translation_domain传递给每个字段(这意味着我无法在setDefaultOptions方法中执行此操作。

如何避免以下重复代码?

$defaultOptions = array(
    'attr' => array('class' => 'form-control'),
    'label' => true,
    'translation_domain' => (
        $options['professional']?
        'prospect_form_librarian' :
        'prospect_form_user'
    )
);
$builder
    ->add('name', null, $defaultOptions + array('some_other_option' => 42))
    ->add('city', null, $defaultOptions)
    ->add('contactEmail', 'email', $defaultOptions)
    ->add('zipCode', null, $defaultOptions)
    ;

我希望代码看起来像这样:

$defaultOptions = array(
    'attr' => array('class' => 'form-control'),
    'label' => true,
    'translation_domain' => (
        $options['professional']?
        'prospect_form_librarian' :
        'prospect_form_user'
    )
);
$builder->someMethodCallThatWouldSolveMyProblem($defaultOptions)
$builder
    ->add('name', null, array('some_other_option' => 42))
    ->add('city')
    ->add('contactEmail', 'email', $defaultOptions)
    ->add('zipCode')
    ;

0 个答案:

没有答案