如何防止 showing/receiving 未翻译的内容?
How to prevent showing/receiving untranslated content?
这是我的距离电池
public function display()
{
$this->loadModel('Distances');
$distances = $this->Distances->find('all',[
'order' => 'Distances.id ASC',
])->toArray();
$this->set('distances',$distances);
}}
问题,如果内容尚未翻译并存储在数据库中,则页面上显示原始未翻译的内容。
如何防止这种情况,并只显示当前语言的翻译内容?
onlyTranslated
选项
不幸的是,这还没有记录,但 Translate
行为支持 onlyTranslated
选项,这将导致只找到那些在当前语言环境中存在翻译的记录。
所以它可以像启用该选项一样简单,或者在加载行为时的配置中:
$this->addBehavior('Translate', [
'onlyTranslated' => true,
// ...
]);
或即时:
$this->Distances->behaviors()->get('Translate')->config('onlyTranslated', true);
但是,这仅在当前语言环境不是默认语言环境时有效。也就是说,当您切换语言环境以便以不同的语言查看您的内容时,在大多数情况下,这正是您想要和需要的!
自定义查询
如果您只想检索存在翻译的那些记录,而不考虑当前语言环境或翻译语言环境,则使用 INNER
加入翻译的自定义查询 table 是一个选项。
使用 Query::innerJoinWith()
这应该非常简单。这是一个基本的例子,应该是不言自明的:
$TranslateBehavior = $this->Distances->behaviors()->get('Translate');
$translationTable = $TranslateBehavior->config('translationTable');
$distances = $this->Distances
->find()
->innerJoinWith($translationTable)
->order('Distances.id ASC')
->toArray();
另见
这是我的距离电池
public function display()
{
$this->loadModel('Distances');
$distances = $this->Distances->find('all',[
'order' => 'Distances.id ASC',
])->toArray();
$this->set('distances',$distances);
}}
问题,如果内容尚未翻译并存储在数据库中,则页面上显示原始未翻译的内容。
如何防止这种情况,并只显示当前语言的翻译内容?
onlyTranslated
选项
不幸的是,这还没有记录,但 Translate
行为支持 onlyTranslated
选项,这将导致只找到那些在当前语言环境中存在翻译的记录。
所以它可以像启用该选项一样简单,或者在加载行为时的配置中:
$this->addBehavior('Translate', [
'onlyTranslated' => true,
// ...
]);
或即时:
$this->Distances->behaviors()->get('Translate')->config('onlyTranslated', true);
但是,这仅在当前语言环境不是默认语言环境时有效。也就是说,当您切换语言环境以便以不同的语言查看您的内容时,在大多数情况下,这正是您想要和需要的!
自定义查询
如果您只想检索存在翻译的那些记录,而不考虑当前语言环境或翻译语言环境,则使用 INNER
加入翻译的自定义查询 table 是一个选项。
使用 Query::innerJoinWith()
这应该非常简单。这是一个基本的例子,应该是不言自明的:
$TranslateBehavior = $this->Distances->behaviors()->get('Translate');
$translationTable = $TranslateBehavior->config('translationTable');
$distances = $this->Distances
->find()
->innerJoinWith($translationTable)
->order('Distances.id ASC')
->toArray();