2015-10-04 28 views
0

我需要修改SUBMIT表單事件中的一個字段,但是當我對字段執行任何驗證規則時都會丟失。Symfony2 - 在SUBMIT事件中修改字段後保持表單驗證

這是所有的表單類型(標題字段沒有實際上我只是用它作爲一個例子被更改)發生的事情:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add("title"); 

    $builder->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) { 
     $form = $event->getForm(); 

     $form->add("title"); 
    }); 
} 

任何驗證規則「標題」現在丟失,或者由實體定義的註釋規則或使用單獨的驗證器類。

我可以做任何事情來保持驗證,或者是否打算驗證規則不會運行在SUBMIT事件中修改的字段?

回答

1

如果您可以處理FormEvents::POST_SUBMIT事件而不是FormEvents::SUBMIT,您將繼續進行驗證。您需要確保監聽器位於您想要編輯的子表單上,否則您將遇到無法將字段添加到提交表單的問題。

0

在這種情況下,你實際上並沒有修改一個字段,而是用$form->add('title')來添加一個新字段,它將替換表單中現有的'title'字段(這就是驗證約束消失的原因)。除非您想詳細說明您在提交事件中做什麼,否則您可能需要查看validation groups的目標功能類型。

+0

該字段需要在提交事件中修改的原因是因爲它最初是作爲實體字段添加的,但選項爲空(用於表單加載的速度)。然後,我重新添加提交事件中的字段以添加所有可能的選項,以便接受數據。 我試着改變使用驗證組,但沒有運氣。 –

+0

你說什麼樣的速度 - 數據庫速度,渲染速度,選擇速度? –