2016-12-26 47 views
0

我試圖用Symfony和樹枝隨機顯示相同的形式,但我似乎無法弄清楚。動態名稱的樹枝形式

我想出迄今在控制器,因此創建的形式X量..

foreach ($participations as $e) { 
     $id = $e->getId(); 
     $formName = "form_doc_".$id; 
     ${$formName} = $this->createForm(DocumentType::class, $documentation); 
     $viewVar[$formName] = ${$formName}->createView(); 
    } 

在嫩枝,我分別從上面設置字符串變量$表格名稱,並使用此變量來設置表單屬性。

{% set formName = "form_doc_" ~ participation.id %} 
{% set subForm = attribute(form, formName) %} 
{{ form_start(subForm) }} 
{{ form_widget(subForm.path) }} 
{{ form_end(subForm) }} 

當我試圖打印表單時,出現錯誤提示。

「無論屬性 」form_doc_40「,也不的方法的一個 」form_doc_40()「, 」getform_doc_40()「/」 isform_doc_40() 「或 」__call()「 的存在,並具有類的公共訪問」 的Symfony \分量\表格\ FormView控件」的admin/volunteerParticipations.html.twig在97" 線

希望那裏有一個人在那裏誰可以幫我;)THX

+0

你_need_使用命名的形式?我的意思是,是否有任何特定的原因不能簡單地使用一組表單?我不是特別喜歡varvar – ccKep

+0

我試着添加一個表格數組,但它給了一個錯誤消息,說我不能把表格放入數組中。但如果可能的話,數組將工作得很好 –

+0

感謝ccKep。陣列在最後工作! :) –

回答

1

你或許可以嘗試使用數組表格如下:

控制器:

/** 
* @Route("/example", name="example_action") 
* @Template("example.html.twig") 
*/ 
public function exampleAction(Request $request) 
{ 
    $forms = array(); 
    $views = array(); 
    foreach ($participations as $e) { 
     $form = $this->createForm(DocumentType::class, $documentation); 
     $forms[] = $form; 
     $views[] = $form->createView(); 
    } 

    foreach ($forms as $form) 
    { 
     $form->handleRequest($request); 

     if (!$form->isSubmitted()) continue; 

     if ($form->isValid()) 
     { 
      // Normal form stuff, eg. persisting 
     } 
    } 

    // return views to twig template 
    return array("forms" => $views); 
} 

查看:

{%- for form in forms -%} 
    {{ form_start(form) }} 
    {{ form_widget(form.path) }} 
    {{ form_end(form) }} 
{%- endfor -%} 
+0

是的。數組最後更容易。我試圖在窗體數組上創建視圖,而不是每個鍵。 ;) –