10

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

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

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

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

仅供参考:我需要这样做才能正确呈现该字段(使用这种方法,我的图像字段始终为空,我需要将其设置为imagePath的内容以呈现上传图像的预览)

4

3 回答 3

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();
于 2012-11-06T11:56:33.133 回答
5

感谢 MatsRietdijk,你帮助了我,但我不得不将代码更改为此

$form = $this->createForm(new SaleType(), $sale);
$form->getData()->setImage('someimage.jpg');
$form->setData($form->getData());
于 2014-01-10T08:59:04.150 回答
2

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

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

于 2012-11-06T12:09:49.893 回答