用vich_image保存表单


save form with 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.

i添加数组解析器在关键字

  public function setLogo($logo)
    {
        if(is_array($logo))
            $logo = reset($logo);
        $this->logo = $logo;
    }

so get error

关联字段"KeywordsBundle'Entity'Keyword#$logo"的类型"KeywordsBundle'Entity'Image"的期望值,得到的值为"Symfony'Component'HttpFoundation'File'UploadedFile"。

我喜欢错误,表单ImageType没有默认值,当我添加这个。Save work fine

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