2016-12-03 1 views
0

В моем базовом файле twig я просматриваю нижний колонтитул. В нижнем колонтитуле это регистрационная форма для подписки на информационный бюллетень. Это вызов рендеринга в базовой ветке.Symfony2 валидация формы не в sub 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"> 

И значение атрибута действия, где ваши данные будут приняты, если кто-то нажимает кнопку Отправить.

Мое решение состоит в том, чтобы добавить дополнительную страницу, которая отображает ту же форму. Как вы привыкли к Symfony, и как визуализировать ту же форму в нижнем колонтитуле, и убедитесь, что ваша форма отправляется на новую страницу с той же формой. , например.

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

Теперь, если кто-нибудь отправляет форму он будет отправлен на страницу с той же формой, и если есть какие-либо ошибки, то он увидит их на этой странице.

Смежные вопросы