2012-04-02 79 views
0

當表單被提交時,刷新後再次顯示,請求被綁定以形成並顯示選定的值。如果表單之前沒有提交,我想用外部數組的數據(表格中的數據)來保存表單。表單是數組類型,沒有連接到任何實體,因爲它用作db過濾器。Symfony2:爲擴展選擇域設置「設置」值(複選框)

我有選擇表單域擴大,多個(複選框),如下配置:

$categoryForm = array(); 
    $form = $this->createFormBuilder($categoryForm) 
       ->add('id', 'choice', array('choices' => $arrayOfChoices, 
               'multiple' => true, 
               'expanded' => true)) 
       ->getForm(); 
    if ($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 
    } 

回答

0

這不是一件容易的事情,但經過幾個小時的思考,我設法做到了。下面我顯示礦工代碼很好地將數據從會話移動到窗體,反之亦然

//bind filters from session to form 
    $sessionFilter = $session->get('filter'); 
    if (!is_null($sessionFilter)) { 
     $form->bind($sessionFilter); 
    } 

    if ($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 
     $formData = $form->getData(); 

     if (count($formData) > 0) { 
      foreach ($formData as $fdkey => $data) { 
       if ($fdkey == 'id' OR $fdkey == 'morezero') { 
        foreach ($data as $value) { 
         $sessionData[$fdkey][$value] = $value ; 
        } 
       } 
      } 
      $session->set('filter', $sessionData); 
     } 
    } 
0

必須將變量傳遞給形式(CONTROLER),然後在生成器類使用傳遞的變量。

+0

你能更精確嗎?在哪裏傳遞?到$ categoryForm?或用setData()方法?那麼如果數據是選擇數組,那麼setData()如何呢? – nysander 2012-04-02 10:22:03