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;
...
}
任何想法?
非常感謝!
你能列舉Dish-Entity completeley嗎? – Confidence
這是一個很大的實體,但我不知道你想要確切地知道什麼。沒有「名稱」或「描述」屬性。 這是你的問題的目的? –
除了button_label之外,Dish實體中沒有其他字段需要轉換。 我不知道它是否可能是此問題的根源,但「description」是文本類型,而不是與「name」不同的字符串。 –