сохранить форму с помощью vich_image onetone

/**
 * @Gedmo\Tree(type="nested")
 * @ORM\Table(name="mKeyword")
 * @ORM\Entity(repositoryClass="KeywordRepository")
 */
class Keyword {

 /**
     * @ORM\OneToOne(targetEntity="Image",mappedBy="keyword" ,cascade={"all"})
     * @var Image
     */
    private $logo;
}

/**
 * @Vich\Uploadable
 * @ORM\Entity
 * @ORM\Table(name="mKeywordLogo")
 */
class Image {
}

форма

class KeywordType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options)
{

    $builder
        ->add('title','text')
        ->add('logo',new ImageType())

форма изображения

class ImageType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('file','vich_image',array(
        'label'=>'logo'
    ));

}

при сохранении формы получить

Expected value of type "KeywordsBundle\Entity\Image" for association field "Mea\KeywordsBundle\Entity\Keyword#$logo", got "array" instead.

я добавляю парсер массива в ключевое слово

  public function setLogo($logo)
    {

        if(is_array($logo))
            $logo = reset($logo);
        $this->logo = $logo;
    }

так получи ошибку

Ожидаемое значение типа «KeywordsBundle \ Entity \ Image» для поля ассоциации «KeywordsBundle \ Entity \ Keyword # $ logo», вместо него получено «Symfony \ Component \ HttpFoundation \ File \ UploadedFile».


person Developer    schedule 16.10.2015    source источник


Ответы (1)


Мне нравится ошибка, Form ImageType не имеет значений по умолчанию, когда я добавляю это. сохранить работу в порядке

   /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Mea\KeywordsBundle\Entity\Image'
        ));
    }
person Developer    schedule 17.10.2015