2

翻訳されたフィールドを持つフォームがあります。このフィールドの 1 つはファイルです。アップロードする必要があります (言語ごとに異なるファイルがあります)。

私は '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

私の推測では、CatalogTranslationVichUploaderBundle を混乱させる可能性があるため、Uploadable として定義されたクラスである必要があります。

私はこのようなことを試してみます:

<?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 に答える