【问题标题】:cakephp 3 i18n translations not loading in the modelcakephp 3 i18n 翻译未加载到模型中
【发布时间】:2018-06-16 00:12:06
【问题描述】:

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

1.向表格模型添加行为

public function initialize(array $config) { 
    $this->addBehavior('Translate', ['fields' => ['title']]);

2.向实体模型添加特征

class Article extends Entity {
    use TranslateTrait;

3.我使用 cake 文档中的 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); ?>

我做错了什么?

【问题讨论】:

    标签: php internationalization cakephp-3.0


    【解决方案1】:

    原来如此 $article = $this-&gt;Articles-&gt;get($id); 不包括翻译。

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

    【讨论】:

      猜你喜欢
      • 2015-10-27
      • 2012-11-11
      • 2020-10-31
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多