Я хочу сохранить форму коллекции.
У меня есть базовая форма BasePromotionsType, в которой я хочу сохранить другую форму NumberOfVisitsType. Но у меня ошибка с This form should not contain extra fields
. В дебагере мне приходит массив в поле number_of_visits
:
array:2 [▼
"count_visits" => 10
"count_points" => 100
]
Чтобы заполнить форму, я отправляю этот json:
{
"active": true,
"use_promotion": true,
"label": "string",
"description": "string",
"picture": 1,
"available_cities": [
1
],
"promotions_settings": 1,
"list_users": [
],
"number_of_visits": {
"count_visits": 10,
"count_points": 12
}
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('active', CheckboxType::class, ['label' => 'active', 'required' => false])
->add('use_promotion', CheckboxType::class, ['label' => 'Одноразовая/Многоразовая', 'required' => false])
->add('label', TextType::class, ['label' => 'Заголовок', 'required' => false])
->add('description', TextType::class, ['label' => 'Описание', 'required' => false])
->add('picture', IntegerType::class, [
'invalid_message' => 'avatar is not a valid',
])
->add('available_cities', CollectionType::class, [
'entry_type' => IntegerType::class,
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'prototype' => true,
'invalid_message' => 'cities is not a valid',
])
->add('promotions_settings', IntegerType::class, [
'invalid_message' => 'settings are invalid',
])
->add('list_users', CollectionType::class, [
'entry_type' => IntegerType::class,
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
'prototype' => true,
'invalid_message' => 'cities is not a valid',
])
->add('number_of_visits', CollectionType::class, [
'entry_type' => NumberOfVisitsType::class
])
->add('send', SubmitType::class, ['label' => 'Отправить'])
;
$builder->get('picture')
->addModelTransformer($this->avatarTransformer);
$builder->get('available_cities')
->addModelTransformer($this->citiesTransformer);
$builder->get('promotions_settings')
->addModelTransformer($this->promotionsSettingsTransformer);
$builder->get('list_users')
->addModelTransformer($this->usersTransformer);
}
В результате мне нужно сохранить базовую форму и форму, встроенную в базовую форму.