我有一个包含已翻译字段的表单。其中一个字段是一个文件,必须要上传(每种语言都有不同的文件)。
我正在使用'stof / doctrine-extensions-bundle'和'a2lix / translation-form-bundle'以及使用symfony2上传文件'vich / uploader-bundle'。
发现了这个https://github.com/a2lix/TranslationFormBundle/issues/83,但它无效
Maximum function nesting level of '100' reached, aborting!
我的目录实体:
/**
* Catalog.
*
* @ORM\Entity()
* @ORM\Table("catalog")
*
* @Vich\Uploadable
*
* @Gedmo\TranslationEntity(class="Entity\Catalog\CatalogTranslation")
*/
class Catalog
{
/**
* @var int
*
* @ORM\Column(type="integer")
* @ORM\Id()
* @ORM\GeneratedValue()
*/
private $id;
/**
* @var string
*
* @ORM\Column()
*
* @Gedmo\Translatable()
*
* @Assert\NotBlank()
*/
private $name;
/**
* @var File
*
* @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName")
*
* @Assert\Image(maxSize = "4M")
*/
protected $imageFile;
/**
* @var string
*
* @ORM\Column(nullable=true)
* @Gedmo\Translatable()
*/
protected $imageName;
/**
* @ORM\OneToMany(
* targetEntity="CatalogTranslation",
* mappedBy="catalog",
* cascade={"persist", "remove"}
* )
*/
private $translations;
}
在构建表单时也试过这个:
->add('imageName', 'a2lix_translationsForms', [
'form_type' => 'vich_file',
'form_options' => array(
'required' => true,
'mapping' => 'product_image',
'allow_delete' => true,
'download_link' => true,
)
])
答案 0 :(得分:0)
我的猜测是CatalogTranslation
应该是定义为可上传的类,否则它可能会混淆VichUploaderBundle。
我尝试这样的事情:
<?php
/**
* Catalog.
*
* @ORM\Entity()
* @ORM\Table("catalog")
*
* NOT uploadable
*
* @Gedmo\TranslationEntity(class="Entity\Catalog\CatalogTranslation")
*/
class Catalog
{
/**
* @var int
*
* @ORM\Column(type="integer")
* @ORM\Id()
* @ORM\GeneratedValue()
*/
private $id;
/**
* @var string
*
* @ORM\Column()
*
* @Gedmo\Translatable()
*
* @Assert\NotBlank()
*/
private $name;
/**
* @var string
*
* @ORM\Column(nullable=true)
* @Gedmo\Translatable()
*/
protected $imageName;
/**
* @ORM\OneToMany(
* targetEntity="CatalogTranslation",
* mappedBy="catalog",
* cascade={"persist", "remove"}
* )
*/
private $translations;
}
class CatalogTranslation
{
// ... as usual
/**
* @var File
*
* @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName")
*
* @Assert\Image(maxSize = "4M")
*/
protected $imageFile;
protected $imageName;
}