2

我有一个包含已翻译字段的表单。其中一个字段是文件,必须上传女巫(每种语言都有不同的文件)。

我正在使用 'stof/doctrine-extensions-bundle' 和 'a2lix/translation-form-b​​undle' 并使用 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,
            )
        ])
4

1 回答 1

0

我的猜测是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;
}
于 2015-08-13T09:45:48.880 回答