Я пытаюсь отправить данные в форму, но после отправки мое составное поле имеет пустое значение. Проблема с полем propertyValues
.
Моя форма:
class PropertyForm extends FormType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder
->add('name', TextType::class)
->add('propertyValues', CollectionType::class, [
'entry_type' => PropertyValueDTO::class,
'required' => true,
'constraints' => [
Count::class, ['min' => 1]
]
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
return $resolver
->setDefaults([
'data_class' => PropertyDTO::class
])
;
}
}
Отправленные данные:
Array
(
[propertyValues] => Array
(
[0] => Array
(
[id] => 15
[value] => Ikea
[propertyId] => 7
[productsCount] => 4
)
)
[id] => 7
[name] => Manufacturer
[description] =>
)
Полученные данные формы:
App\DTO\Api\PropertyDTO Object
(
[id:App\DTO\Api\PropertyDTO:private] =>
[name:App\DTO\Api\PropertyDTO:private] => Manufacturer
[description:App\DTO\Api\PropertyDTO:private] =>
[propertyValues:App\DTO\Api\PropertyDTO:private] => Array
(
)
)
и форма отправлена и действительна. Как видите, propertyValues
- это пустой массив
Мой код контроллера:
public function update(Property $property, Request $request)
{
$form = $this->createForm(PropertyForm::class);
$data = json_decode($request->getContent(), true);
$form->submit($data);
if (!$form->isValid()) {
return $this->jsonFormFailed($form);
}
return $this->jsonResponse($form->getData());
}
Я пытался отследить функцию submit()
и наткнулся на такой код:
$viewData = $this->config->getCompound() ? $this->viewData : $submittedData;
Поскольку мое поле составное, symfony использует пустое $this->viewData
вместо $submittedData