Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用genemu form bundle symfony2自动完成删除元素_Php_Jquery_Symfony - Fatal编程技术网

Php 如何使用genemu form bundle symfony2自动完成删除元素

Php 如何使用genemu form bundle symfony2自动完成删除元素,php,jquery,symfony,Php,Jquery,Symfony,我在Genemu表单包中使用它 add('users', 'genemu_jqueryautocompleter_entity', array( 'route_name' => 'ajax_user', 'class' => Acme'\UserBundle\Entity\OldUser', 'multiple' => true, 'required' => false )) 我能够多选择使用和数据输入内部ok。但即使我删除了整个文本框,我的值仍然保留在数据库中。看起

我在Genemu表单包中使用它

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

我能够多选择使用和数据输入内部ok。但即使我删除了整个文本框,我的值仍然保留在数据库中。看起来我无法删除它。他们输入ok,但不更新

如果我使用正常的multiselect而不使用autocomplete,那么一切都正常

编辑:


我的意思是,就像我们在SO中提问并在键入时选择标记一样。然后我们可以通过删除文本来删除标记。在我的例子中,我可以在键入时添加用户,但删除字符不会删除用户。在隐藏字段中,它们仍然存在

您是否尝试在实体属性(用户)上放置
orphanRemoving=true
,以便删除它们


更多关于
orphalRemoving

的信息,我相信这是Genemuble的一个bug。我能看到的是,如果您更改了该值,该值将在实际输入中得到更改(GEnemu Bundle中的javascript将其隐藏),但如果您删除输入中的值,则不会发生任何更改,因此旧值将保留

提交表单时,会提交旧值,因此无法真正删除内容

解决这个问题的正确方法应该是改进javascript,将实际隐藏输入的值设置为空白,genemuBundle应该处理它,但在我们等待它们纠正之前,我们可以执行以下操作:

$("#autocompleter_name_input").change(function(){
    if($("#autocompleter_name_input").val()==""){
        $("#name_input").val("");
    }   
}); 
(虽然我没有尝试过,但我正在做其他的解决方法。这也是针对单个,而不是针对您的案例,这是一个多选的案例,因此使问题变得有点复杂…)

作为解决方法,您可以在控制器中处理请求:

Genemu在请求中发送用户在输入中输入的内容。因此,在$request->request->all()中应该有类似的内容:

Array
(
   [your_entity_name] => Array
      ( all the fields, even with the old values)
   [autocompleter_your_entity_name] => Array
      ( what the user actually input)
)
只需使用它为表单添加更多验证,并对控制器中的实体执行任何您想要的操作


很抱歉没有给出完整的答案,只是给出了一些解决办法……

我想你误解了我的问题。我的意思是说,如果我有symfony提供的默认multiselect框,那么我可以选择许多用户并以相同的方式进行编辑。它起作用了。但当使用genemu autocomplete实体时,会插入值,但我无法编辑它们,即无法删除它们