如何使用Yii2多语言行为

如何使用Yii2多语言行为,yii,yii2,yii-extensions,yii2-extension,Yii,Yii2,Yii Extensions,Yii2 Extension,我在使用Yii2多语言行为时遇到问题,希望这里有人能帮助我 这是我的数据库 CREATE TABLE IF NOT EXISTS `post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, `enabled` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGIN

我在使用Yii2多语言行为时遇到问题,希望这里有人能帮助我

这是我的数据库

CREATE TABLE IF NOT EXISTS `post` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `created_at` datetime NOT NULL,
 `updated_at` datetime NOT NULL,
 `enabled` tinyint(1) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS `postLang` (
`id` int(11) NOT NULL AUTO_INCREMENT,
 `post_id` int(11) NOT NULL,
 `language` varchar(6) NOT NULL,
 `title` varchar(255) NOT NULL,
 `content` TEXT NOT NULL,
 PRIMARY KEY (`id`),
 KEY `post_id` (`post_id`),
 KEY `language` (`language`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

ALTER TABLE `postLang`
ADD CONSTRAINT `postlang_ibfk_1` FOREIGN KEY (`post_id`) REFERENCES `post` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
和此PostlangController

use omgdef\multilingual\MultilingualBehavior;
public function behaviors()
{
    return [
         'ml' => [
            'class' => MultilingualBehavior::className(),
            'languages' => [
                'vi-VN' => 'Russian',
                'en-US' => 'English',
            ],
            //'languageField' => 'language',
            //'localizedPrefix' => '',
            //'requireTranslations' => false',
            //'dynamicLangClass' => true',
            'langClassName' => PostLang::className(), // or namespace/for/a/class/PostLang
            'defaultLanguage' => 'vi-VN',
            'langForeignKey' => 'post_id',
            'tableName' => "{{%postLang}}",
            'attributes' => [
                'title', 'content',
            ]
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
    ];
}
和输出或

use omgdef\multilingual\MultilingualBehavior;
public function behaviors()
{
    return [
         'ml' => [
            'class' => MultilingualBehavior::className(),
            'languages' => [
                'vi-VN' => 'Russian',
                'en-US' => 'English',
            ],
            //'languageField' => 'language',
            //'localizedPrefix' => '',
            //'requireTranslations' => false',
            //'dynamicLangClass' => true',
            'langClassName' => PostLang::className(), // or namespace/for/a/class/PostLang
            'defaultLanguage' => 'vi-VN',
            'langForeignKey' => 'post_id',
            'tableName' => "{{%postLang}}",
            'attributes' => [
                'title', 'content',
            ]
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
    ];
}

调用未定义的方法backend\controllers\PostlangController::primaryKey()

不要将行为添加到控制器将其添加到模型中

将此行为附加到模型(示例中的Post)

使用以下方法: