Ошибка использования A2lix в качестве встроенной формы

Я использую A2lix Translation Form Bundle и Doctrine Behaviors Transhable в проекте, где у меня есть две сущности: компания и файлы. У компании есть несколько переводимых полей, поэтому у меня есть компания 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 ответов

Другие вопросы по тегам