Symfony Поле CollectionType получить данные пустыми - PullRequest
0 голосов
/ 25 апреля 2020

Создать форму

 $form = $this->createForm(BasketType::class,$basket,[

Класс корзины имеет AbstractProductOrder

 /**
     *
     * @ORM\OneToMany(targetEntity="AbstractProductOrder", mappedBy="basket",cascade={"all"})
     * @var AbstractProductOrder|ArrayCollection
     */
    protected $orders;

AbstractProductOrder равен Doctrine объединенному наследованию, поэтому может иметь различные поля

Основная форма

class BasketType extends MeaFormType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

  $builder
            ->add('orders',CollectionType::class,[
                'entry_type' => BasketProductOrderType::class,
            ])

Определение BasketProductOrderType

class BasketProductOrderType extends MeaFormType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        /** @var AbstractProductOrder $order */
        $order = $builder->getData();

...

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => AbstractProductOrder::class,
//            'compound'           => true,
            'allow_extra_fields' => true,
        ));
    }

dump ($ order) равно нулю, почему? (Корзина имеет несколько заказов)

Как я могу получить объект в этом месте, мне нужно создать входные данные, объект зависит от некоторых классов.

Я пытаюсь заархивировать что-то подобное

 if($order instanceof ProductOrderAbc){
            $builder->add('period');
        }

Только если $ order является экземпляром ProductOrderAb c с периодом

...