帮助! 所以,我从文档中做了每一步。
1。向表格模型添加了行为
public function initialize(array $config) {
$this->addBehavior('Translate', ['fields' => ['title']]);
2. 为实体模型添加特征
class Article extends Entity {
use TranslateTrait;
3. 我使用蛋糕文档中的sql代码创建了i18n表。
CREATE TABLE i18n (
id int NOT NULL auto_increment,
locale varchar(6) NOT NULL,
model varchar(255) NOT NULL,
foreign_key int(10) NOT NULL,
field varchar(255) NOT NULL,
content text,
PRIMARY KEY (id),
UNIQUE INDEX I18N_LOCALE_FIELD(locale, model, foreign_key, field),
INDEX I18N_FIELD(model, foreign_key, field)
);
4. 像这样创建输入(基于蛋糕文档):
<?php echo $this->Form->input('_translations.fr.title') ?>
当我提交表单时,所有内容都会在i18n表中正确保存。 i18n table screenshot
但是,当我尝试阅读翻译时,它不存在。 我是这样做的:
$article = $this->Articles->get($id);
我可以读取每个属性,但翻译的属性。
此代码返回null:
<?php var_dump($article->translation('fr')->title); ?>
我做错了什么?
答案 0 :(得分:0)
事实证明
$article = $this->Articles->get($id);
不包括翻译。
相反,我使用
$this->Articles->find('translations')->where(['id', $id])->first();