学说扩展 可与扩展类一起翻译



我对教义扩展可翻译有问题,我希望在这里找到解决方案。

我有 2 个类:卡片项目和菜肴在一个表中。它们都实现了可翻译和Dish扩展CardItem。

第一个问题:我需要为 Dish 类实现"可翻译"吗?

这里有一个小测试不起作用,我不知道为什么:

$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository('ProjectMyBundleEntityTranslationCardItemTranslation');
$dishManager = $this->get('dish_manager');
$dish = $dishManager->find(1);
$repository->translate($dish, 'name', 'en_GB', 'content in english')
    ->translate($dish, 'description', 'en_GB', 'description in english');
$em->persist($dish);
$em->flush();

我有一个错误:"未捕获的PHP异常Gedmo\Exception\InvalidArgumentException:"实体:项目\MyBundle\实体\Dish不翻译字段 - 描述">

卡片项目.php

use GedmoMappingAnnotation as Gedmo;
use GedmoTranslatableTranslatable;
/**
 * CardItem
 *
 * @ORMTable(name="card_item", indexes={@ORMIndex(name="index_inserted_at", columns={"inserted_at"})})
 * @ORMInheritanceType("SINGLE_TABLE")
 * @ORMDiscriminatorColumn(name="type", type="string")
 * @ORMDiscriminatorMap( {"dish" = "Dish"} )
 * @ORMEntity(repositoryClass="ProjectMyBundleRepositoryCardItemRepository")
 * @GedmoTranslationEntity(class="ProjectMyBundleEntityTranslationCardItemTranslation")
 * @ExclusionPolicy("all")
 */
abstract class CardItem implements Translatable {
      /**
     * @var int
     *
     * @ORMColumn(name="id", type="integer", nullable=false)
     * @ORMId
     * @ORMGeneratedValue(strategy="IDENTITY")
     * @Expose
     */
    protected $id;
      /**
     * @var string
     *
     * @GedmoTranslatable
     * @ORMColumn(name="name", type="string", length=200, nullable=true)
     * @Expose
     */
    protected $name;
    /**
     * @var string
     *
     * @GedmoTranslatable
     * @ORMColumn(name="description", type="text", length=65535, nullable=true)
     * @Expose
     */
    protected $description;
    [...]
}

菜.php

/**
 * Dish.
 * @ORMEntity
 * @ORMEntity(repositoryClass="ProjectMyBundleRepositoryDishRepository")
 * @GedmoTranslationEntity(class="ProjectMyBundleEntityTranslationCardItemTranslation")
 */
class Dish extends CardItem implements Translatable
{
     /**
     * @var string
     *
     * @GedmoTranslatable
     * @ORMColumn(name="button_label", type="string", length=500, nullable=true)
     * @Expose
     */
    private $buttonLabel;
    ...
}

知道吗?

非常感谢!

最后,它适用于"JOINED"表。将single_table更改为加入有点困难,但它有效。

最新更新