2012-04-02 152 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