Загрузить файл для каждого перевода

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

Я использую «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,
            )
        ])

person What    schedule 10.08.2015    source источник


Ответы (1)


Я предполагаю, что CatalogTranslation должен быть классом, определенным как Uploadable, иначе он, вероятно, запутает 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;
}
person K-Phoen    schedule 13.08.2015