2013-11-22 107 views
0

我搜索了一段時間,但我沒有找到任何東西。Symfony2表格動態選擇實體

我想用另一個選擇創建一個動態選擇。例如:

以我的形式,我有兩個字段(類別&子類別)鏈接到一個實體,當我選擇一個項目在類別下拉項目在子類別將改變。

所以好吧,我發現我可以管理一個事件監聽器。

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

     var_dump($data->getCategory()); 
    }); 

好吧,我可以得到所選的類別和加載後的子類別,但我怎麼可以用ajax調用這個?

希望大家有什麼例子?

回答

0

的反應不是那麼簡單......基本上,如果你想根據初步&提交的值建立一個形式,你需要一個事件偵聽器附加到PRE_SET_DATA & PRE_SUBMIT事件。當表單被初始化時,PRE_SET_DATA事件被觸發。在這裏,你將接收你的對象作爲表單事件中的數據,如果你不提供一個(不要忘記處理這種情況),則爲null。通過第一部分,您將能夠根據您的初始數據動態構建您的表單。

然後,當您處理表單時,如果提交表單,PRE_SUBMIT事件將被觸發。在這種情況下,你將會感受到一個扁平的陣列會萎縮所有提交的數據。根據這個數組,你可以根據提交的數據重建表單。這裏的主要問題是陣列是一個數組&不是你的模型對象。意思是你不會有類別對象,但他的視圖表示(他的ID)...

希望它有幫助!