yii2将消息提取到db

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2将消息提取到db相关的知识,希望对你有一定的参考价值。

我正在使用trntv / Yii2-starter-kit。如何将消息提取到DB?我的配置:

'*'=> [
         'class' => 'yiii18nDbMessageSource',
         'sourceMessageTable'=>'{{%i18n_source_message}}',
         'messageTable'=>'{{%i18n_message}}',
         'enableCaching' => YII_ENV_DEV,
         'cachingDuration' => 3600,
         'on missingTranslation' => ['ackendmodulesi18nModule', 'missingTranslation']
      ]

我的I18N档案:

'sourcePath'=>Yii::getAlias('@base'),
'languages' => ['uz','ru'],
'translator' => 'Yii::t',
'sort' => false,
'removeUnused' => true,
'only' => [
    '*.php',
],
'ignoreCategories' => ['yii'],

我试过了:

php yii message @common/config/messages/_base.php

和php yii消息但总是将所有消息写入文件:vendor / yiisoft / yii2 / messages。如何将消息导出到DB?有人帮忙吗?

答案

你需要使用以下CONSOLE-DOCS有一个ExtendedMessageControler类。此控制器扩展默认的MessageController以提供一些有用的操作:

  • 要在不同的消息源之间迁移消息,请执行以下常见操作 php console/yii message/migrate @common/config/messages/php.php @common/config/messages/db.php

这意味着您应该在@common/confiog/messages/文件夹中有一个名为db.php的文件,该文件将用于创建messagesource_message表,文件的内容应该是

<?php
return yiihelpersArrayHelper::merge(
    require(__DIR__ . '/_base.php'),
    [
        // 'db' output format is for saving messages to database.
        'format' => 'db',
        // Connection component to use. Optional.
        'db' => 'db',
        // Custom source message table. Optional.
        'sourceMessageTable' => '{{%i18n_source_message}}',
        // Custom name for translation message table. Optional.
        'messageTable' => '{{%i18n_message}}',
    ]
);

消息源目录将由包含以下内容的php.php目录中的@common/config/messages文件确定

<?php
return yiihelpersArrayHelper::merge(
    require(__DIR__ . '/_base.php'),
    [
        // 'php' output format is for saving messages to php files.
        'format' => 'php',
        // Root directory containing message translations.
        'messagePath' => Yii::getAlias('@common/messages'),
        // boolean, whether the message file should be overwritten with the merged messages
        'overwrite' => true,
    ]
);

您只需运行migration命令即可创建表,并将消息导出到相应的表中。

有关更多详细信息,请参阅SOURCEactionMigrate()

以上是关于yii2将消息提取到db的主要内容,如果未能解决你的问题,请参考以下文章

Yii2异常'yii db Exception',消息'找不到驱动程序'

如何在 Yii2 中将带有 kartik-Select2 小部件项目的选择保存到 DB?

Yii2.0 安装yii2-queue并在Linux启动守护进程监听消息

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

yii2框架消息语言

ValidatePassword中的Yii2异常()