2016-02-20 43 views
0

我已經創建了一個使用Symfony 2.4的表單,該表單沒有鏈接到任何實體,因爲我只想將數據創建爲報表。我使用AbstractType擴展類創建了一個表單,並且我需要添加幾個項目,因爲表單代表了一個帳單。我瞭解allow_add屬性,但它只是讓一個字段添加到窗體,我需要做一些像我展示形象:Symfony 2.4 - 在表單中添加dinamically字段

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()); 
    } 
} 

感謝先進。

更新: 我忘了提及我正在使用枝條延伸。以防萬一,知道如何使用它。

+0

我會這樣做:將當前表單數據以json格式傳遞給頁面。如果用戶點擊「添加新項目」鏈接,將ajax關於表單(json中的信息)的信息添加到您想要添加的類中,添加新項目,返回新的json並讓javascript再次構建表單。你可能會遇到與formkey(令牌)的麻煩,但那是另一個話題。 – paskl

回答

1

基本上你需要2種形式。一,稱它爲主要形式和另一種形式的物品。然後,您可以使用collection type多次將項目表單類型嵌入到主表單類型中。您還需要一些JavaScript來添加和刪除項目。要準確記錄如何做到這一點很長,但在docs中有一個很好的例子。

+0

謝謝,我完全誤解了標籤的工作方式。 – 8370

相關問題