2016-12-03 20 views
0

私のベースのtwigファイルでは、私はフッターをレンダリングしています。フッターには、ニュースレターの下付き文字の登録フォームがあります。これはベースの小枝でデレンダリングコールです。symfony2フォームのバリデーションがサブredered twigにありません

{{ render(controller('MyBundle:Global:footer')) }} 

このフッターコントローラから、フッターをレンダリングしています。これによって、コントローラコード:私は電子メールのみの入力が何であるか、フォームと送信ボタンを提出する場合は、このルートがトリガされた

/** 
* @Route("/{_locale}/newsletter/", defaults={"_locale": "nl"}, requirements={"_locale": "nl|en|de"}, name="_newsletter") 
*/ 
public function footerAction(Request $request) 
{ 
    $form = $this->createForm(new NewsletterType()); 
    $form->handleRequest($request); 

    if ($form->isValid()) { 
     return $this->redirectToRoute('_404'); 
    } else { 
     return $this->render('MyBundle:global:footer.html.twig', array('form' => $form->createView())); 
    } 
} 

、形だけが検証されません。テスト用のこの例では、404ページにリダイレクトします。しかし、フッターだけを変更するだけですか?

+0

リクエストがないためにエラーが発生していません...コントローラーが含まれていますので、サブリクエストをしています:https://knpuniversity.com/screencast/symfony-journey/sub-要求内部 – barat

答えて

1

フッターに配置するため、このフォームを多くのページにレンダリングするとします。どのような形態として、あなたは、フォーム要素例えば

<form method="post" action="somewhere"> 

でaction属性が必要で、誰かが送信ボタンをヒットした場合、あなたのデータが到着する場所action属性の値です。

私の解決方法は、同じフォームを示す余分なページを追加することです。あなたはSymfonyに慣れていて、同じフォームをフッターに表示し、フォームが同じフォームの新しいページに投稿されていることを忘れないでください。例: 誰がフォームを送信する場合

$form->setAction($this->generateUrl('target_route')) 

は、今では同じ形で、彼はこのページ上に表示されるエラーがないかどうかをページに送信されます。

関連する問題