symfony2:在控制器操作中设置表单外部的表单字段的值

时间:2012-11-06 10:55:04

标签: forms symfony doctrine-orm symfony-forms image-upload

我需要设置symfony2表单元素的值。 我在Controllers Action中使用了doctrine2实体, Symfony \ Component \ Form \ AbstractType 和createForm()方法。

$saleDataForm = $this->createForm(new SaleType(), $sale);

现在,我如何从该表单中获取元素,以及如何设置它的值? 我想做这样的事情,但它不起作用:

$saleDataForm->get('image')->setValue('someimapge.jpg');

仅供参考:我需要这样做才能正确渲染字段(使用this approach,我的图像字段始终为空,我需要将其设置为 imagePath的内容显示上传图片的预览)

3 个答案:

答案 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)

如果您尝试填写文件上传字段 - 这是错误的想法。问问自己:应该有哪些数据?如果用户上传图像,则在该字段中将是其本地系统上图像的路径。但是在文件上传后你改变了它的名字和位置,所以你不需要关于这条路径的信息,你就是不要保留它。

适当的方式应该是空的上传字段在下面(或上面,或者你拥有它的任何地方;))图像。然后在提交表单后如果该字段不为空,则应更改已编辑的图像。