2016-12-26 5 views
0

私はSymfonyとTwigで同じフォームをランダムに印刷しようとしていますが、それはわかりません。動的名を持つTwigフォーム

私がこれまでになるように、コントローラでフォームのX量を作成して作ってみた。.. TWIGで

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

私は上から$ formNameフォームとして、それぞれの文字列変数を設定し、これを使用しています変数を使用してフォーム属性を設定します。

{% 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の

ホープtheresの「ライン97" で管理/ volunteerParticipations.html.twigで\コンポーネント\フォーム\ FormViewコントロール私を助けることができるそこに誰か;)Thxを

+0

あなたが名前のフォームを使用するために_必要_ですか?つまり、単純にフォームの配列を使用しない特定の理由はありますか?私は特にvarvarsが好きではない – 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

うん。最後に配列が簡単だった。私は各キーの代わりにフォームの配列にViewを作成しようとしていました。 ;) –

関連する問題