I have a form like below:
class ItemType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder // ... ->add('tags','text',array( 'required' => false, 'attr' => array('name' => 'tags'), 'mapped' => false)) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'MyBundle\ItemBundle\Entity\Item', 'cascade_validation' => true, )); } }
My edit action
public function editAction(Request $request, $id) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('MyBundleItemBundle:Item')->find($id); $form = $this->createForm(new ItemType(), $entity); //$form->get('tags')->setValue('test text'); // ^- this is what i would like to do -^ // ... }
While I am editing an item, How can I change form field value inside controller before rendering it?
You can use setData()
to set data on form fields in Symfony, like this:
$form = $formBuilder->getForm(); $form->get('firstname')->setData('John');
You can change tags value in the controller:
$request = $this->get('request'); if ($request->getMethod() == 'POST') { $form->bind($request); if $form->isValid()) { $entity->setTags('test'); //persist ... } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With