使用元数据动态生成可翻译列

时间:2015-04-28 04:30:32

标签: php symfony doctrine

我想使用元数据为我的实体制作可翻译行为。

我有一篇文章

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)。

到目前为止有没有办法实现这种行为?

非常感谢你的帮助。

0 个答案:

没有答案