0
У меня есть два объекта, которые связаны между собой ассоциацией доктрины «много-к-одному». Я создал коллекцию форм, но когда я пытаюсь сохранить что-то, он ударил меня с ошибкой.Ошибка регистрации формы Symfony
ошибка, что я получаю:
Expected argument of type "Zenith\SurveyBundle\Entity\SurveyOption", "array" given
Это моя первая форма та, которая загружает коллекцию.
class TestType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('option', CollectionType::class, [
'entry_type' => SurveyOptionType::class,
'allow_add' => true,
'allow_delete' => true,
'entry_options' => [
'label' => false,
],
])
->add('submit', SubmitType::class, [
'label' => 'Salveaza',
])
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => SurveyManager::class
]);
}
}
Это форма нагружена коллекции:
class SurveyOptionType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('isEnabled', CheckboxType::class, [
'label' => 'Chestionar Activ',
])
->add('headquarter', EntityType::class, [
'class' => HeadQuarterManager::class,
'multiple' => false,
'expanded' => false,
])
->add('userNumber', IntegerType::class, [
'attr' => [
'min' => '1',
'type' => 'number',
],
'label' => 'Numar Utilizatori',
])
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => SurveyOption::class
));
}
}
Мои действия контроллера:
public function newAction($surveyId, Request $request)
{
$surveyOption = new SurveyOption();
$em = $this->getDoctrine()->getManager();
$surveyRepository = $em->getRepository(SurveyManager::class);
$survey = $surveyRepository->findOneBy(['id' => $surveyId]);
$form = $this->createForm(TestType::class, $survey);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
}
return [
'surveyOption' => $surveyOption,
'form' => $form->createView(),
];
}
'SurveyManager' должен иметь метод' getOptions', я думаю, что лучше всего переименовать e поле формы для 'surveyOption', поэтому оно никогда не столкнется с параметрами формы. Еще в Symfony 2.3 другой метод назывался «getOptions», который теперь переименовывается в «configureOptions». – Rvanlaak
Сущности имеют все необходимые методы .. потому что я использовал generatie: сущности на них –