我对可翻译的原则扩展有一个问题,我希望在这里找到一个解决方案。
我有两个类: cardItem和Dish放在一张桌子上。它们都实现了可译性,Dish对CardItem进行了扩展。
第一个问题:我是否需要为Dish类实现“可翻译”?
这里有一个小测试不起作用,我也不知道为什么:
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository('Project\MyBundle\Entity\Translation\CardItemTranslation');
$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:”实体: Project\MyBundle\Entity\Dish不翻译字段描述“。
CardItem.php
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\Translatable\Translatable;
/**
* CardItem
*
* @ORM\Table(name="card_item", indexes={@ORM\Index(name="index_inserted_at", columns={"inserted_at"})})
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap( {"dish" = "Dish"} )
* @ORM\Entity(repositoryClass="Project\MyBundle\Repository\CardItemRepository")
* @Gedmo\TranslationEntity(class="Project\MyBundle\Entity\Translation\CardItemTranslation")
* @ExclusionPolicy("all")
*/
abstract class CardItem implements Translatable {
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @Expose
*/
protected $id;
/**
* @var string
*
* @Gedmo\Translatable
* @ORM\Column(name="name", type="string", length=200, nullable=true)
* @Expose
*/
protected $name;
/**
* @var string
*
* @Gedmo\Translatable
* @ORM\Column(name="description", type="text", length=65535, nullable=true)
* @Expose
*/
protected $description;
[...]
}Dish.php
/**
* Dish.
* @ORM\Entity
* @ORM\Entity(repositoryClass="Project\MyBundle\Repository\DishRepository")
* @Gedmo\TranslationEntity(class="Project\MyBundle\Entity\Translation\CardItemTranslation")
*/
class Dish extends CardItem implements Translatable
{
/**
* @var string
*
* @Gedmo\Translatable
* @ORM\Column(name="button_label", type="string", length=500, nullable=true)
* @Expose
*/
private $buttonLabel;
...
}知道吗?
非常感谢!
发布于 2017-04-19 13:30:53
最后,它与“联合”表一起工作。将single_table更改为joined有点困难,但它有效。
https://stackoverflow.com/questions/43395792
复制相似问题