2017-04-13 93 views
1

我有一個擴展翻譯的原則擴展問題,我希望能在這裏找到解決方案。原則擴展可翻譯的擴展類

我有2類:cardItem和Dish在一張表中。他們都實現了Translatable和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 \異常\ InvalidArgumentException:」 實體:項目\ MyBundle \實體\盤並沒有轉化領域 - 描述

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; 

    ... 
} 

任何想法?

非常感謝!

+0

你能列舉Dish-Entity completeley嗎? – Confidence

+0

這是一個很大的實體,但我不知道你想要確切地知道什麼。沒有「名稱」或「描述」屬性。 這是你的問題的目的? –

+0

除了button_label之外,Dish實體中沒有其他字段需要轉換。 我不知道它是否可能是此問題的根源,但「description」是文本類型,而不是與「name」不同的字符串。 –

回答

0

最後,它與「JOINED」表一起使用。將single_table更改爲已加入但它工作起來有點困難。