1

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'],
            ],
        ],
    ];
}

と出力エラー

未定義のメソッド backend\controllers\PostlangController::primaryKey() の呼び出し

4

1 に答える 1

1

コントローラーに動作を追加しないでください モデルに追加してください

この動作をモデルにアタッチします (例では投稿)。

https://github.com/OmgDef/yii2-multilingual-behavior

于 2015-10-08T07:38:44.430 に答える