我对教义扩展可翻译有问题,我希望在这里找到解决方案。
我有 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更改为加入有点困难,但它有效。