Symfony - получить неотображенные поля во вложенных формах - PullRequest
1 голос
/ 24 марта 2020

У меня Symfony Тип ItemType, основанный на сущности.

class IpQuoteItemsType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('itemName', TextType::class, [
                'label' => 'Produktname'
            ])
            ...
            ->add('specialDiscount', PercentType::class, [
                'required' => false,
                'label' => 'Sonderrabatt',
                'mapped' => false,
                'attr' => [
                    'placeholder' => 'Sonderrabatt 0,00 %'
                ]
            ])
        ;
    }

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

}

, который используется в качестве CollectionType в окончательной форме:

class IpQuotesType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        ...
        $builder->add('products', CollectionType::class, [
            'entry_type' => IpQuoteItemsType::class,
            'data' => $items
        ]);
    }

}

Ни при каких обстоятельствах я не получаю неотображенное поле specialDiscount. Он по-прежнему доступен в событии PRE_SUBMIT ItemsType, но не может быть найден нигде в окончательной форме QuotesType.

Возможно ли передать не отображенные данные во вложенные формы?

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете получить неотображенное поле в вашем контроллере следующим образом:

$form->get('nestedEntity')->get('fieldName')->getData()

Я не тестирую с коллекцией, но она работает с customType в отношении OneToOne.

Надеюсь, эта помощь.

...