Формы Symfony2 и полиморфные коллекции

Я играю с Symfony2 и немного не уверен, как Symfony2 обрабатывает полиморфные коллекции в компоненте View. Кажется, я могу создать объект с коллекцией AbstractChildren, но не знаю, что с ним делать внутри класса Form Type.

Например, у меня есть следующие отношения сущностей.

/**
 * @ORM\Entity
 */
class Order
{
    /**
     * @ORM\OneToMany(targetEntity="AbstractOrderItem", mappedBy="order", cascade={"all"}, orphanRemoval=true)
     * 
     * @var AbstractOrderItem $items;
     */
    $orderItems;  
   ...
}


/**
 * Base class for order items to be added to an Order
 *
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({
 *     "ProductOrderItem" = "ProductOrderItem",
 *     "SubscriptionOrderItem " = "SubscriptionOrderItem "
 * })
 */
class AbstractOrderItem
{
    $id;
   ...
}

/**
 * @ORM\Entity
 */
class ProductOrderItem  extends AbstractOrderItem
{
    $productName;
}

/**
 * @ORM\Entity
 */
class SubscriptionOrderItem extends AbstractOrderItem
{
    $duration;
    $startDate;
   ...
}

Достаточно просто, но когда я создаю форму для моего класса заказа

class OrderType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('items', 'collection', array('type' => AbstractOrderItemType()));
    }
}

Я не уверен, как справиться с этой ситуацией, когда вам действительно нужен другой тип формы для каждого класса элемента в коллекции?

11
задан Elnur Abdurrakhimov 20 September 2012 в 09:20
поделиться