Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Forms 手动选择相关实体_Forms_Symfony_Doctrine - Fatal编程技术网

Forms 手动选择相关实体

Forms 手动选择相关实体,forms,symfony,doctrine,Forms,Symfony,Doctrine,我有一个可以有图像的实体。这是使用OneToMany关系完成的。现在,我希望用户选择一个图像。我当然可以这样使用表单字段: $builder->add('image','entity',array( “标签”=>“图像”, 'class'=>'VendorNameBundle:Image', “属性”=>“id”, ) ); 它按预期呈现一个包含所有ID的下拉列表。但我真正想要的只是一个隐藏的字段,它存储所选图像的id 这会起作用,但似乎不是一件好事 在中键入: $builder->添加(“图

我有一个可以有图像的实体。这是使用
OneToMany
关系完成的。现在,我希望用户选择一个图像。我当然可以这样使用
表单字段

$builder->add('image','entity',array(
“标签”=>“图像”,
'class'=>'VendorNameBundle:Image',
“属性”=>“id”,
) );
它按预期呈现一个包含所有ID的下拉列表。但我真正想要的只是一个隐藏的字段,它存储所选图像的id

这会起作用,但似乎不是一件好事

中键入

$builder->添加(“图像”、“文本”和数组)(
'data'=>$object->getImage()->getId(),
“属性路径”=>false
));
控制器中

$\u image=$form[“\u image”]->getData();
如果($\u图像){
$image=$this->getDoctrine()->getRepository('VendorNameBundle:image')->find($\u image);
如果($image){
$object->setImage($image);
}
}

我的问题是:如何获取包含相关对象ID的隐藏文本字段并存储新选定的字段?

是否有javascript可以根据选定的图像更新字段?或者您是否会回发两个字段,例如
new\u image
old\u image
。在这种情况下,为什么不在持久化实体之前使用新字段覆盖数据呢?我实际上想更新字段并替换当前值。但是如果我发送另一个值,比如
new\u image
,我仍然需要像问题中的那样手动更新实体,对吗?正确,我认为这没有任何意义,除非你隐藏select符号,否则我会自动为图像实体创建一个select符号,并使用一些javascript来操作它,使其成为用户选择的任何图像的值。但我不喜欢这样的事实,它加载了选择框的所有图像(可能会得到一个很长的列表),我必须使用CSS隐藏它,然后在那里更改值。似乎比我目前的解决方案更努力。谢谢你的意见。