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

And*_*erj 11 forms image-upload symfony-forms symfony doctrine-orm

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

$saleDataForm = $this->createForm(new SaleType(), $sale);
Run Code Online (Sandbox Code Playgroud)

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

$saleDataForm->get('image')->setValue('someimapge.jpg');
Run Code Online (Sandbox Code Playgroud)

FYI:我需要这样做,以正确渲染场(使用这种方法,我场总是空的,我需要将其设置为内容的ImagePath呈现上传图像的预览)

Mat*_*ijk 14

要获得更准确的答案,您应该在此表单中包含您使用的实体,以便我们可以看到getter和setter.但根据你的问题,这应该工作: 在控制器内执行此操作:

$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());
Run Code Online (Sandbox Code Playgroud)

如果表单已经创建,那么:

$saleDataForm = $this->createForm(new SaleType(), $sale);
$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());
Run Code Online (Sandbox Code Playgroud)

要获取数据,请使用:

$saleDataForm->getData()->getImage()->getValue();
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于映射字段.你如何为非映射做到这一点? (6认同)

Tom*_*ský 5

感谢MatsRietdijk,你帮了我,但我不得不改变代码

$form = $this->createForm(new SaleType(), $sale);
$form->getData()->setImage('someimage.jpg');
$form->setData($form->getData());
Run Code Online (Sandbox Code Playgroud)