Symfony2 REST从数据库转换

时间:2015-12-30 07:58:55

标签: symfony translation fosrestbundle

我面临着处理我的情况非常困难的问题。我在数据库中保存标题,名称是标题,翻译栏名称是bntitle。

现在我使用FosRest和jms序列化器来提供api响应。但我找不到根据当地发送回复的方法。因为它总是调用

getTitle()

获取标题的方法,我的问题是,如果本地是en,那么标题键将是getTitle()如果本地是标题,则应调用getBnTitle();

这个控制器:

public function getAction(Content $entity, Request $request)
{
   $locale =  $request->getLocale();
   $data = array();

   $data['_embedded']['content'] = $entity;

    eturn $data;

}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这不是确保处理翻译的最佳方法,但如果你只需要将它作为title属性,你可以将本地作为参数传递给实体,然后在getTitle()方法中进行测试。

public class YourEntity{
    private $locale ;
    //......

    public function setLocale($locale){
       $this->locale = $locale
    }
    public function getTitle(){ 
      // your test here 
      if ( $locale === 'bn' ) return $this->getBnTitle();
      return $title ; 
    }

然后在你的控制器中:

public function getAction(Content $entity, Request $request)
{
   $locale =  $request->getLocale();
   // pass local to entity 
   $entity->setLocale($locale);
   $data = array();

   $data['_embedded']['content'] = $entity;

    eturn $data;

}

修改: 如果你想要一个更好的解决方案,有很多学说扩展可以进行翻译,其中一个就是这个 https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md