2012-09-13 109 views
1

刪除元素,我在Genemu形式捆綁使用此如何使用genemu形式捆綁的Symfony2自動完成

add('users', 'genemu_jqueryautocompleter_entity', array(
'route_name' => 'ajax_user', 
'class' => Acme'\UserBundle\Entity\OldUser', 
'multiple' => true, 
'required' => false 
)) 

https://github.com/genemu/GenemuFormBundle/blob/master/Resources/doc/jquery/autocomplete/entity_ajax.md

我能夠多選的用途和數據進入內確定。但即使我刪除整個文本框,我的值仍然保留在數據庫中。看起來我不能刪除它。他們輸入正確但不更新。

如果我使用正常的多選不自動完成,那麼一切正常

編輯:

,當我們在這麼問的問題,並選擇標籤打字時我的意思只是喜歡。那麼我們可以通過刪除文本來刪除標籤。在我的情況下,我可以在輸入時添加用戶,但刪除角色不會刪除用戶。在隱藏字段,他們仍然有

回答

0

您是否嘗試過把orphanRemoval=true你的實體屬性(用戶),所以它可以刪除它們?

更多關於orphalRemovalhttp://docs.doctrine-project.org/en/2.0.x/reference/working-with-associations.html#orphan-removal

+0

我想你誤解了我的問題。我的意思是說,如果我有symfony提供的默認multiselect框,那麼我可以選擇許多用戶並以相同的方式進行編輯。有用。但是當使用genemu自動完成實體時,值插入OK,但我不能編輯它們,即不能刪除它們 – user825904

0

我相信這是genemuBundle的錯誤。我能看到的是,如果你改變了這個值,這個值就會在實際輸入中發生變化(GEnemu Bundle中的JavaScript使它隱藏起來),但是如果你刪除輸入中的值,什麼都不會改變,所以舊值仍然存在。

當您提交表單,舊值被提交,因此你不能真正刪除任何東西。

解決它的正確方法應該是讓JavaScript更好,將真正的隱藏輸入的值設置爲空白,genemuBundle應該照顧它,但是當我們等待他們糾正之後,我們可以執行如下操作:

$("#autocompleter_name_input").change(function(){ 
    if($("#autocompleter_name_input").val()==""){ 
     $("#name_input").val(""); 
    } 
}); 

(我沒有嘗試,雖然,我做這個其他的解決方法。另外這是一個單一的,不是你的情況下,這是一個多選,因此使這更復雜一點點...... )

作爲解決方法,您可以在控制器中處理請求:

Genemu還會在請求中發送用戶在輸入中字面輸入的內容。所以,你應該在你的$請求 - >請求 - >所有的()的東西類似:

Array 
(
    [your_entity_name] => Array 
     (all the fields, even with the old values) 
    [autocompleter_your_entity_name] => Array 
     (what the user actually input) 
) 

只是用它來增加更多的驗證的形式和做任何你想在你的控制你的實體。

對不起,不完整的答案,只是給解決方法...