表格中有很多其他[可能是空的]实体(Symfony 2.4)

时间:2014-09-08 15:04:34

标签: php forms symfony collections

我的表单设计有问题,即使框架允许,我也不知道......

我有一个具有多个值的实体:

Contract:
    Id
    Client
    Creation Date
    Comments
    array (Emision)

Emision: 
    Id
    Month
    Year
    Quantity
    Area

Area
    Id
    Name

我需要按照区域整合的方式创建一个与合作伙伴签订合同的表单,换句话说,区域* 24(每月1个)emisions

那些emisions可能不存在,所以如果字段数量为空则不应该保留它们

首先,我尝试在控制器中创建一个带有emision [area] [year] [month]的数组:

foreach($areas as $area){
    for ($i = 0; $i < 2; $i++){
        for ($j = 0; $j < 12; $j++){
            $emision = new Emision();
            $emision->setZona($area->getId());
            $emision->setMonth($j);
            $emision->setYear($i);
            $emisiones[$area][$i][$j] = $emision;
        }
    }

}

return $this->render('ZBPubliBundle:Contrato:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
        'emisiones' => $emisiones
    ));

使用所需的设计很容易在树枝中生成表单,但表单中有很多相同的emision对象名称,我无法在响应中获取它们。

尝试在合同中创建了许多新的事件后:

$builder
        ->add('Client')
        ->add('createdAt')
        ->add('...')
        ->add('emisiones', 'collection', array('type' => new EmisionContratoType()))
;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('cantidad')
        ->add('year', null, array('read_only' => true))
        ->add('month', null, array('read_only' => true))
        ->add('zona', null, array('read_only' => true))
    ;
}

并且在控制器中我将emisions直接添加到控制器操作中的合同对象,但是我无法在视图中获取区域或年份的emisions来绘制表单...

我想知道我的问题是否有“时尚解决方案”......

Tyvm抱歉我的英语不好!

0 个答案:

没有答案