Symfony Forms | Doctrine -> как структурировать параметры запроса, чтобы заполнить форму, в которую встроена индивидуальная сущность - PullRequest
0 голосов
/ 31 октября 2018

У меня есть сущность Событие и отношение один-к-одному к Местоположению сущности. Я хочу иметь единую форму для создания и сохранения их в БД. Итак, я построил это:

EventType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add("event_name", TextType::class, [
            'property_path' => "name"
        ])
        ->add("event_description", TextType::class, [
            'property_path' => "description"
        ])
        ->add("location", LocationType::class)
    ;
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => Event::class,
    ));
}

и LocationType:

    public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add("location_name", TextType::class, [
            'property_path' => "name"
        ])
        ->add("latitude", NumberType::class, [
            "scale" => 10
        ])
        ->add("longitude", NumberType::class, [
            "scale" => 10
        ]);
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => Location::class,
        'inherit_data' => true,
    ));
}

Я пытаюсь сделать POST-запрос к моей конечной точке с параметрами запроса, структурированными так:

            event_name: this.state.event_name,
            event_description: this.state.event_description,
            location: {
                location_name: this.state.location_name,
                latitude: this.state.latitude,
                longitude: this.state.longitude,
            }

Но после отправки такой формы Symfony выдает ошибку, что Msgstr " Ни одно из свойств 'широта' (...) не существует и не имеет публичного доступа в классе Event ". Да, конечно, но именно поэтому я создал встроенную форму LocationType, в которой они есть.

Я возился с этим кодом, и перед некоторыми изменениями параметры формы были приняты, но я мог получить любые данные внутри встроенной формы LocationType, поэтому она все еще не работала.

Как мне структурировать параметры JSON и собрать форму Symfony, чтобы эта работа работала?

...