Symfony2数据库中的REST转换
我面临着非常困难的问题来处理我的处境。Im将标题保存在数据库中,对于en,名称为title,对于翻译列,名称为bntitle 现在,im使用FosRest和jms序列化程序来提供api响应。但是我找不到一种基于本地的回复方式。因为它总是叫Symfony2数据库中的REST转换,symfony,translation,fosrestbundle,Symfony,Translation,Fosrestbundle,我面临着非常困难的问题来处理我的处境。Im将标题保存在数据库中,对于en,名称为title,对于翻译列,名称为bntitle 现在,im使用FosRest和jms序列化程序来提供api响应。但是我找不到一种基于本地的回复方式。因为它总是叫 getTitle() 方法获取标题,我的问题是,如果local是en,那么标题键将是getTitle()如果local是bn,则title应该调用getbntTitle() 该控制器: public function getAction(Content $e
getTitle()
方法获取标题,我的问题是,如果local是en,那么标题键将是getTitle()
如果local是bn,则title应该调用getbntTitle()
该控制器:
public function getAction(Content $entity, Request $request)
{
$locale = $request->getLocale();
$data = array();
$data['_embedded']['content'] = $entity;
eturn $data;
}
如何才能做到这一点?这肯定不是处理翻译的最佳方法,但如果您只需要对title属性使用它,则可以将local作为参数传递给实体,然后在
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;
}
编辑:
如果你想要一个更好的解决方案,有许多理论扩展可以进行翻译,其中之一就是
这不是一种处理翻译的干净方法,现在你要面对它的后果。更改您的数据模型是否已经太晚了?是的,我们的数据库中现在已经有数千个数据了..thnx它工作了,但是您是否有更好的主意而不使用原则行为或转换?公共函数getTitle(){return$this->locale=='bn'?$this->getBntitle():$this->title;}我使用了这个。。。