symfony2: setting the value of a form field outside the form, inside a controller action

Andresch Serj picture Andresch Serj · Nov 6, 2012 · Viewed 20.9k times · Source

I need to set the value of a symfony2 form element. I use a doctrine2 entity, a Symfony\Component\Form\AbstractType and the createForm() method inside my Controllers Action.

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

Now, how do i get an element from that form, and how can i set it's value? I want to do something like this, but it doesn't work:

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

FYI: I need to do this to render the field correctly (using this approach, my image field is always empty and i need to set it to the content of imagePath to present a preview of an uploaded image)

Answer

Mats Rietdijk picture Mats Rietdijk · Nov 6, 2012

For a more exact answer you should include the entities you use in this form so we can see the getters and setters. But based on your question this should work: Inside the controller do this:

$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());

This is if the form is already created so:

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

To get the data use this:

$saleDataForm->getData()->getImage()->getValue();