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