cakephp 3 i18n翻译未加载到模型中

时间:2018-01-06 09:53:43

标签: php internationalization cakephp-3.0

帮助! 所以,我从文档中做了每一步。

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); ?>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明 $article = $this->Articles->get($id); 不包括翻译。

相反,我使用 $this->Articles->find('translations')->where(['id', $id])->first();