使用A2lix作为嵌入表单时出错

时间:2015-11-12 15:37:47

标签: forms symfony doctrine-orm doctrine-extensions a2lix-translation

我正在使用A2lix翻译表格捆绑和学说行为可翻译在我有两个实体的项目中:公司和文件。公司有一些可翻译的领域,所以我有一个CompanyTranslations实体。一家公司可以拥有一个文件,因此公司和文件使用OneToOne单向引用进行映射。公司文件是可翻译的,因此该属性位于CompanyTranslation文件中。

CompanyTranslation:

class CompanyTranslation
{
    use ORMBehaviors\Translatable\Translation;

    /**
     * @ORM\OneToOne(targetEntity="File", cascade={"persist"})
     * @ORM\JoinColumn(name="translatable_file_id", referencedColumnName="id")
     * @Assert\Valid()
     * @Assert\Type(type="MyApp\CoreBundle\Entity\File")
     **/
    private $translatableFile;

    /**
     * Set translatableFile
     *
     * @param $translatableFile
     */
    public function setTranslatableFile(File $translatableFile = null)
    {
        $this->translatableFile = $translatableFile;
    }

    /**
     * Get translatableFile
     *
     * @return $translatableFile
     */
    public function getTranslatableFile()
    {
        return $this->translatableFile;
    }
}

文件:

class File
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    public $filePath;

    /**
     * @Assert\File()
     */
    private $file;

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set filePath
     *
     * @param string $filePath
     */
    public function setFilePath($filePath)
    {
        $this->filePath = $filePath;
    }

    /**
     * Get filePath
     *
     * @return string
     */
    public function getFilePath()
    {
        return $this->filePath;
    }

    /**
     * Set file
     *
     * @param UploadedFile $file
     */
    public function setFile(UploadedFile $file = null)
    {
        $this->file = $file;
    }

    /**
     * Get file
     *
     * @return UploadedFile
     */
    public function getFile()
    {
        return $this->file;
    }
}

档案表格类型:

class FileType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('file', 'file', array(
            'label' => false
        ));
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'MyApp\CoreBundle\Entity\File'
        ));
    }

    public function getName()
    {
        return 'file_form';
    }
}

公司表格类型:

class CompanyType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('translations', 'a2lix_translationsForms', array(
                'locales' => $this->languages,
                'form_type' => new FileType(),
                'form_options' => array(
                    'data_class' => 'MyApp\CoreBundle\Entity\File',
                    'required'      => false,
                    'validation_groups' => array('file_upload')
                )
            ));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        parent::setDefaultOptions($resolver);

        $resolver->setDefaults(array(
            'data_class' => 'MyApp\CoreBundle\Entity\Company'
        ));
    }
}

错误就是这个:

表单的视图数据应该是MyApp \ CoreBundle \ Entity \ File类的实例,但是是MyApp \ CoreBundle \ Entity \ CompanyTranslation类的实例。您可以通过将“data_class”选项设置为null或添加将MyApp \ CoreBundle \ Entity \ CompanyTranslation类的实例转换为MyApp \ CoreBundle \ Entity \ File实例的视图转换器来避免此错误。

我已经将文件类型表单的data_class和字段的data_class设置为null,但也设置为MyApp \ CoreBundle \ Entity \ File。两者都给我发错。我不知道发生了什么。

有人可以帮忙吗?

谢谢!

0 个答案:

没有答案