这也破坏了我们的某些形式。我通过将自定义数据通过选项解析器传递来修复了该问题。
在您的表单中输入:
public function buildForm(FormBuilderInterface $builder, array $options){ $this->traitChoices = $options['trait_choices']; $builder ->add('name', TextType::class, ['label' => 'L_PROFILE_EDIT_NAME', 'required' => false]) ... ->add('figure_type', ChoiceType::class, [ 'label' => 'L_PROFILE_EDIT_FIGURETYPE', 'mapped' => false, 'choices' => $this->traitChoices['figure_type'] ]) ... ;}public function configureOptions(OptionsResolver $resolver){ $resolver->setDefaults(array( 'data_class' => 'FooBarBundleEntityProfile', 'trait_choices' => null, ));}然后,当您在控制器中创建表单时,将其作为选项而不是在构造函数中传递:
$form = $this->createForm(ProfileEditType::class, $profile, array( 'action' => $this->generateUrl('profile_update'), 'method' => 'PUT', 'trait_choices' => $traitChoices, ));


