Создать форму
$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 с периодом