如何使用 knp 实验室可翻译学说行为访问翻译属性

2024-04-07

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

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;
    }
}

我想从控制器访问文本:

$item = $em->getRepository('AppMyBundle:Scaleitem')->find(1);
dump($item->getText());

这是行不通的。有人对我的问题有提示吗?


如图所示可翻译的文档 https://github.com/KnpLabs/DoctrineBehaviors#translatable您可以使用以下方式访问翻译:

  • $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();并始终检索当前语言环境中的任何“属性”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 knp 实验室可翻译学说行为访问翻译属性 的相关文章

随机推荐