Ошибка использования 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. Оба посылают мне ошибки. Я не знаю, что происходит.
Кто-нибудь может помочь?
Спасибо!