gpt4 book ai didi

symfony - 如何使用 knp labs 可翻译 Doctrine 行为访问翻译后的属性(property)

转载 作者:行者123 更新时间:2023-12-04 20:39:32 25 4
gpt4 key购买 nike

我正在使用可翻译的 Doctrine ,并且我有一个具有可翻译属性的实体。这看起来像这样。

class Scaleitem
{
/**
* Must be defined for translating this entity
*/
use ORMBehaviors\Translatable\Translatable;

/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}

我有一个文件 ScaleitemTranslation:
class ScaleitemTranslation
{
use ORMBehaviors\Translatable\Translation;

/**
* @ORM\Column(type="string", length=255)
*/
protected $text;


/**
* Set text
*
* @param string $text
* @return ScaleitemTranslation
*/
public function setText($text)
{
$this->text = $text;

return $this;
}

/**
* Get text
*
* @return string
*/
public function getText()
{
return $this->text;
}
}

我想从 Controller 访问文本:
$item = $em->getRepository('AppMyBundle:Scaleitem')->find(1);
dump($item->getText());

这不起作用。有人对我的问题有提示吗?

最佳答案

translatable docs 所示您可以使用以下方法访问翻译:

  • $item->translate('en')->getName();当您需要特定语言时
  • 或添加 __call Scaleitem 中的方法实体(不在翻译实体上):
    /**
    * @param $method
    * @param $args
    *
    * @return mixed
    */
    public function __call($method, $args)
    {
    if (!method_exists(self::getTranslationEntityClass(), $method)) {
    $method = 'get' . ucfirst($method);
    }

    return $this->proxyCurrentLocaleTranslation($method, $args);
    }

    然后使用 $item->getName();并始终检索当前语言环境中的任何“属性”。
  • 关于symfony - 如何使用 knp labs 可翻译 Doctrine 行为访问翻译后的属性(property),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232860/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com