У меня есть некоторые вложенные формы с CollectionType, и, кажется, данные из конструктора не передаются на 2 -й уровень гнездования. < /p>
Я упростил классы своих форм, просто с важным я думаю (если вы хотите, чтобы джеть больше информации сообщил мне в комментариях). Класс: < /p>
class ActivityServiceCreationType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($options, $router) {
$activity = $event->getData();
dump($activity); //JUST TO TEST
$form = $event->getForm();
... //$form->add of all necessary fields
}
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Activity',
...
);
}
}
< /code>
над ActivityServiceCreationType у меня есть следующая форма, которая является просто коллекцией предыдущей: < /p>
class ActivityServiceCreationMultipleType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('activities', CustomCollectionType::class, [
'entry_type' => ActivityServiceCreationType::class,
'entry_options' => $options,
'mapped' => true,
'allow_add' => true,
'show_add_link' => true,
])
;
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($options) {
$data = $event->getData();
dump($data); //To test the data arriving to this form
});
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => null,
...
));
}
}
< /code>
Тогда у меня есть форма «основная», с помощью I Create From Controller: < /p>
class ActivityServiceCreationCollectionType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('selectAll', CheckboxType::class, [...])
...
;
$builder->add('multipleActivities', CustomCollectionType::class, [
'entry_type' => ActivityServiceCreationMultipleType::class,
'entry_options' => [
"router" => $options["router"],
"em" => $options['em'],
"basePeriod" => $options['basePeriod'],
'fit' => $options['fit'],
'periods' => $options['periods'],
'activities' => $options['activities']
],
'mapped' => true
])
;
}
< /code>
Из контроллера я хочу установить объекты активности в форму ActivityServiceCreationType, чтобы поля могли быть созданы. И я делаю это так: < /p>
$form = $this->createForm(ActivityServiceCreationCollectionType::class,
["multipleActivities" => ["activities" => $activities]],
[
"router" => $this->get("router"),
"em" => $this->getEm(),
"periods" => $periods,
"basePeriod" => $basePeriod,
'fit' => $fit
]);
< /code>
Как видите данные для формы: < /p>
["multipleActivities" => ["activities" => $activities]]
< /code>
Результаты для дампов, которые я поместил в код, составляют следующее:
для первого дампа, в ActivityServiceCreationMultipleType I Получаю ArrayCollection of Actions
Подробнее здесь: https://stackoverflow.com/questions/565 ... collection
Symfony3 Pass Form Data to Collection Inside Collection ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение