Symfony 2.4 - 在表单中添加dinamically字段

时间:2016-02-20 21:35:34

标签: php forms symfony symfony-2.4

我使用Symfony 2.4创建了一个没有链接到任何实体的表单,因为我只想获取数据来创建报表。我使用AbstractType扩展类创建了一个表单,我需要添加几个项目,因为表单代表一个帐单。我知道allow_add属性,但它只是允许在表单中添加一个字段,我需要做一些像我在图像中显示的那样:

formulario

我根本不知道怎么做,我创建了一个项目类,它包含两个属性,但我找不到任何关于此的信息。到目前为止,这就是我所拥有的:

namespace Abadia\FacturaBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;>

class ReciboCajaType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('ciudad', 'text')
            ->add('fecha', 'date')
            ->add('valor', 'number')
            ->add('recibi_de', 'text')
            ->add('suma_recibida', 'number')
            ->add('suma_letras', 'textarea')
            ->add('bloque', 'text')
            ->add('numero', 'text')
            ->add('descripcion', 'textarea')
            ->add('areas_comunes', 'number')
            ->add('cuota_extraordinaria', 'number')
            ->add('saldo', 'number')
            ->add('cheque', 'number')
            ->add('otros', 'number')
            ->add('efectivo', 'number')
            ->add('generar', 'submit')
        ;
    }

    public function getName()
    {
        return 'abadia_facturabundle_recibocajatype';
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array());
    }
}

先谢谢。

更新 我忘了提到我正在使用Twig扩展。以防万一知道如何使用它。

1 个答案:

答案 0 :(得分:1)

基本上你需要2个表格。一,称它为主要形式,另一种形式为物品。然后,您可以使用collection type多次将项目表单类型嵌入到主表单类型中。您还需要一些javascript来添加和删除项目。记下如何做到这一点会很长,但docs中有一个很好的例子。