2015-08-10 4 views
2

У меня есть форму с полями, которые переводятся. Одним из этих полей является файл, который должен быть загружен (каждый язык имеет другой файл).Загрузить файл для каждого перевода

Я использую 'stof/doctrine-extensions-bundle' и 'a2lix/translation-form-bundle' и для загрузки файлов vich/uploader-bundle 'с symfony2.

нашел 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

Я предполагаю, что 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; 
} 
Смежные вопросы