我在Genemu表格包中使用它
add('users', 'genemu_jqueryautocompleter_entity', array(
'route_name' => 'ajax_user',
'class' => Acme'\UserBundle\Entity\OldUser',
'multiple' => true,
'required' => false
))
我可以多选使用和数据输入内部确定。但即使我删除整个文本框,我的值仍然保留在数据库中。看起来我无法删除它。他们输入确定,但没有得到更新。
如果我使用普通的多选而没有自动完成,那么一切都很好
编辑:
我的意思就像我们在SO中提问并在打字时选择标签一样。然后我们可以通过删除文本来删除标签。在我的情况下,我可以在键入时添加用户但删除字符不删除用户。在隐藏的领域,他们仍然在那里
答案 0 :(得分:0)
您是否尝试将orphanRemoval=true
放在您的实体属性(用户)上,以便删除它们?
有关orphalRemoval
http://docs.doctrine-project.org/en/2.0.x/reference/working-with-associations.html#orphan-removal
答案 1 :(得分:0)
我相信这是genemuBundle的一个错误。我可以看到,如果你改变了值,那么值将在实际输入中得到改变(来自GEnemu Bundle的javascript使其隐藏),但如果删除输入中的值,则没有任何改变,因此旧的值仍然存在
当您提交表单时,会提交旧值,因此您无法真正删除内容。
解决问题的正确方法应该是使javascript变得更好,将真实隐藏输入的值设置为空白,genemuBundle应该处理它,但是当我们等到它们纠正时我们可以做类似的事情: / p>
$("#autocompleter_name_input").change(function(){
if($("#autocompleter_name_input").val()==""){
$("#name_input").val("");
}
});
(虽然我没有尝试过,但我正在做其他的解决方法。另外这是针对单个的,而不是针对你的情况,这是一个多选,因此使这个更复杂......)< / p>
作为解决方法,您可以在控制器中处理请求:
Genemu还在请求中发送用户字面输入的内容。所以你应该在你的$ request-&gt; request-&gt; all()中有类似的东西:
Array
(
[your_entity_name] => Array
( all the fields, even with the old values)
[autocompleter_your_entity_name] => Array
( what the user actually input)
)
只需使用它为表单添加更多验证,并在控制器中对您的实体执行任何操作。
很抱歉没有给出完整答案,只是提供解决方法......