我需要设置symfony2表单元素的值。 我在Controllers Action中使用了doctrine2实体, Symfony \ Component \ Form \ AbstractType 和createForm()方法。
$saleDataForm = $this->createForm(new SaleType(), $sale);
现在,我如何从该表单中获取元素,以及如何设置它的值? 我想做这样的事情,但它不起作用:
$saleDataForm->get('image')->setValue('someimapge.jpg');
仅供参考:我需要这样做才能正确渲染字段(使用this approach,我的图像字段始终为空,我需要将其设置为 imagePath的内容显示上传图片的预览)
答案 0 :(得分:14)
要获得更准确的答案,您应该在此表单中包含您使用的实体,以便我们可以看到getter和setter。但根据你的问题,这应该有效: 在控制器内执行此操作:
$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());
如果已经创建了表单,那么:
$saleDataForm = $this->createForm(new SaleType(), $sale);
$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());
要获取数据,请使用:
$saleDataForm->getData()->getImage()->getValue();
答案 1 :(得分:5)
感谢MatsRietdijk,你帮了我,但我不得不把代码更改为
$form = $this->createForm(new SaleType(), $sale);
$form->getData()->setImage('someimage.jpg');
$form->setData($form->getData());
答案 2 :(得分:2)
如果您尝试填写文件上传字段 - 这是错误的想法。问问自己:应该有哪些数据?如果用户上传图像,则在该字段中将是其本地系统上图像的路径。但是在文件上传后你改变了它的名字和位置,所以你不需要关于这条路径的信息,你就是不要保留它。
适当的方式应该是空的上传字段在下面(或上面,或者你拥有它的任何地方;))图像。然后在提交表单后如果该字段不为空,则应更改已编辑的图像。