2015-03-13 2 views
1

У меня все настроено как в документации, и все работает отлично, если я загружаю все файлы.Symfony 2 - Gedmo Загружаемая ошибка durng edition

Но когда я хочу изменить только другие элементы в форме, не меняя фото я получил следующее сообщение об ошибке:

Вы должны пройти экземпляр FileInfoInterface или действительный массив для объекта класса

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(), 
    ); 
} 

Форма 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'; 
} 
} 

Как предотвратить от объекта обновления пустыми полями ввода? во время editForm-> handleRequest ($ request);

Любые идеи?

+0

Вы решили проблему? У меня такая же. Помоги мне, пожалуйста – Neokortex

ответ

0

Попробуйте $form->submit($request->request->all(), false) вместо $form->handleRequest($request). Это предотвратит сброс свойств объекта, отсутствующих в входящих POST-данных.