2016-07-25 103 views
2

我希望在提交表單之前顯示錶單的錯誤。 我有數據庫數據不完整的表單,所以我想在試圖保存之前顯示已經丟失的內容。之前的表單驗證

但$ form-> isValid()僅在表單也被提交時纔會執行(只發生在post上)。

我試過了驗證程序,但是這給了我一個錯誤列表而沒有將它們添加到窗體中,如果我自己這樣做似乎是一個糟糕的工作,但是我無法弄清楚源代碼如何實現這一點。

$form = $this->get('form.factory')->create(SchoolFormType::class, $school, $formOptions); 
$form->handleRequest($request); 
if ($form->isValid()) { 
    // ... 
} 

回答

1

您可以模擬一個提交:

$form->handleRequest($request); 

$wasSubmitted = $form->isSubmitted(); 

if(!$wasSubmitted){ 
    $form->submit($form->getData(),false); 
} 

if ($form->isValid()) { 
    // ... 

    // next lines are to be sure that the form will always need to be submitted manualy : 
    if($wasSubmitted){ 
     $em->persist($entity); 
     $em->flush(); 

     return $this->render ... 
    } 
} 

return $this->render ... 

看到source code提交方法。

+1

謝謝! 我試過$ form-> submit(null,false);但它給了我一個csrf錯誤,我不知道如何複製它。奇蹟般有效! – tmas