首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可扩展类可翻译的原则扩展

可扩展类可翻译的原则扩展
EN

Stack Overflow用户
提问于 2017-04-13 15:05:39
回答 1查看 198关注 0票数 1

我对可翻译的原则扩展有一个问题,我希望在这里找到一个解决方案。

我有两个类: cardItem和Dish放在一张桌子上。它们都实现了可译性,Dish对CardItem进行了扩展。

第一个问题:我是否需要为Dish类实现“可翻译”?

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

代码语言:javascript
复制
$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

代码语言:javascript
复制
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

代码语言:javascript
复制
/**
 * 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;

    ...
}

知道吗?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 13:30:53

最后,它与“联合”表一起工作。将single_table更改为joined有点困难,但它有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43395792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档