我面临着处理我的情况非常困难的问题。我在数据库中保存标题,名称是标题,翻译栏名称是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;
}
我该怎么做?
答案 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