我想使用元数据为我的实体制作可翻译行为。
我有一篇文章
class Article implements TranslatableInterface {
/**
* @HeidanTranslatable
*/
private $title;
/**
* @HeidanLocale
*/
private $locale;
public function getTitle() {
return $this->title;
}
public function setTitle($title) {
$this->title = $title;
return $this;
}
public function getLocale() {
return $this->locale;
}
public function setLocale($locale) {
$this->locale = $locale;
return $this;
}
我希望有一种Gedmo Doctrine Extension行为,它将根据属性和允许的语言环境在数据库列中创建。
例如,对于实体文章,我希望创建两列:title_fr,title_en。
我希望这些东西能够与Doctrine行为联系起来,我制作了一个loadClassMetadataListener
class LoadClassMetadataListener {
/**
* @param LoadClassMetadataEventArgs $eventArgs
*/
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
$metadata = $eventArgs->getClassMetadata();
$metadata
->mapField(array('fieldName' => 'title_fr', 'type' => 'text'))
;
}
当我运行一个学说:schema:update --force时出现以下错误:
[ReflectionException]
属性Heidan \ CoreBundle \ Entity \ Article :: $ title_fr不存在
所以我猜他们说属性title_fr不存在,那是对的。
我不想为我的所有实体设置手动属性(私有$ title_fr,私有$ title_en,私有$ content_fr,私有$ content_en)。
到目前为止有没有办法实现这种行为?
非常感谢你的帮助。