2013-10-14 71 views
1

我想要一個表單集合,可以讓我填寫每週數據。我有一個實體是本週有幾個統計Symfony 2.3.6嵌套表單

/** 
* @ORM\Column(type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
protected $week_id; 

/** 
* @ORM\Column(type="string") 
*/ 
protected $area_worked; 

/** 
* @ORM\OneToMany(targetEntity="User") 
*/ 
protected $approved_by; 

/** 
* @ORM\OneToMany(targetEntity="DailyStats") 
*/ 
protected $daily_stats; 

以後,我每天的統計的實體:

/** 
* @ORM\Column(type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
protected $day_id; 

/** 
* @ORM\ManyToOne(targetEntity="WeeklyStats") 
*/ 
protected $weekly_stat_id; 

/** 
* @ORM\Column(type="float") 
*/ 
protected $hours_worked; 

/** 
* @ORM\Column(type="integer") 
*/ 
protected $day_of_week; 
與這兩個

然後,我希望有一個形式,我可以輸出成表顯示整個一週:

  Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday 
Hours |  |   |   |   |  |   | 

然而,當我把這個變成一種形式:

//weekly stats form 

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('dailyReports', 'collection',array(
      'type'=>new DailyStatsForm(), 
      'options' => array(
       'required' => false 
      ), 
      'allow_add' => true, 
     )); 
} 

這將生成一個空字段集的表單。我可以使用JavaScript來添加一個字段,但是我想知道它是否可能總是生成這個表單的7天以及每週統計信息的其他字段?

任何解決方案的建議將不勝感激。

回答

4

是的,你可以看看文件,如果你增加7個DailyStats實體的周實體隨後的Symfony2會使你想這七個輸入,請http://symfony.com/doc/current/cookbook/form/form_collections.html

class TaskController extends Controller 
{ 
     public function newAction(Request $request) 
     { 
      $task = new Task(); 

      // dummy code - this is here just so that the Task has some tags 
      // otherwise, this isn't an interesting example 
      $tag1 = new Tag(); 
      $tag1->name = 'tag1'; 
      $task->getTags()->add($tag1); // any new related entity you add represents a new embeded form 
      $tag2 = new Tag(); 
      $tag2->name = 'tag2'; 
      $task->getTags()->add($tag2); 
      // end dummy code 

      $form = $this->createForm(new TaskType(), $task); 

      $form->handleRequest($request); 

      if ($form->isValid()) { 
       // ... maybe do some form processing, like saving the Task and Tag objects 
      } 

      return $this->render('AcmeTaskBundle:Task:new.html.twig', array(
       'form' => $form->createView(), 
      )); 
    } 
} 
+0

謝謝,我也只需要在呈現表單視圖之前創建它們。然後只是不允許添加。 – Chausser