2016-12-03 72 views
0

在我的基地樹枝文件我渲染我的頁腳。在頁腳中,這些是註冊表格,用於下載簡報。這是在基地樹枝渲染電話。Symfony2的表單驗證redered枝杈

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

我假設你呈現的許多頁面這種形式,因爲你把它在頁腳。任何形式的你需要在表單元素的action屬性e.g

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

和動作屬性的值就是如果有人點擊發送按鈕數據將到達。

我的解決方案是添加一個額外的頁面,顯示相同的形式。就像你已經習慣了Symfony並且在頁腳中呈現相同的表單並且確保你的表單用相同的表單提交給新頁面。 例如現在

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

,如果有人提交表單就會被髮送到頁面相同的形式,如果有任何錯誤,他會看到他們此頁面上。