1

I have everything configured as in documentation and everything works perfect if I upload all files.

But when I want change only other elements in form without changing photo i have received following error message:

You must pass an instance of FileInfoInterface or a valid array for entity of class

 public function updateAction(Request $request, $id)
 {
    $em = $this->getDoctrine()->getManager();

    $entity = $em->getRepository('CmUserBundle:User')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find User entity.');
    }

    $deleteForm = $this->createDeleteForm($id);
    $editForm = $this->createEditForm($entity);
    $editForm->handleRequest($request);

    $container = $this->container;

    if ($editForm->isValid()) {


        $uploadableManager = $this->get('stof_doctrine_extensions.uploadable.manager');
        $uploadableManager->markEntityToUpload($entity, $entity->getPath());

        $em->flush();

        return $this->redirect($this->generateUrl('user_edit', array('id' => $id)));
    }

    return array(
        'entity'      => $entity,
        'edit_form'   => $editForm->createView(),
        'delete_form' => $deleteForm->createView(),
    );
}

Form clas:

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class UserType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array                $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('email', null, array('attr' => array('class' => 'form-control')))
        ->add('username', null, array('attr' => array('class' => 'form-control')))
        ->add('path', 'file', array(
            'data_class' => null
        ))
        ->add('firstName', null, array('attr' => array('class' => 'form-control')))
        ->add('lastName', null, array('attr' => array('class' => 'form-control')))
        ->add('localization', null, array('attr' => array('class' => 'form-control')))
    ;
}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'CmUserBundle\Entity\User',
    ));
}

/**
 * @return string
 */
public function getName()
{
    return 'appbundle_user';
}
}

How to prevent from update entity by empty input fields? during editForm->handleRequest($request);

Any ideas?

dbcoder
  • 11
  • 1

1 Answers1

0

Try $form->submit($request->request->all(), false) instead of $form->handleRequest($request). This will prevent from clearing entity's properties which are not present in incoming POST data.

kozlice
  • 714
  • 7
  • 12